我写的一个打飞机的小游戏,运行几秒之后所有图形都会变白色,而且还有白色的运动轨迹(有清除轨迹颜色的函数的),总之就是好像几秒之后我的RGB都自动调用RGB(255,255,255)了~~~~ 55555555555
这是主循环while(TURE)
{
SetBkMode(global_hdc, OPAQUE);

sprintf(buffer6,"Score: %d  ", ship.score);
sprintf(buffer7,"Life: %d  ", ship.life);
sprintf(buffer8,"Laser Ammo: %d  ", ship.laser_ammo);
sprintf(buffer9,"Missile Ammo: %d  ", ship.missile_ammo);
TextOut(global_hdc,640,55, buffer6,strlen(buffer6));
TextOut(global_hdc,640,80, buffer7,strlen(buffer7));
TextOut(global_hdc,640,105,buffer8,strlen(buffer8));
TextOut(global_hdc,640,130,buffer9,strlen(buffer9));
Draw_Sprite(NO_ERASE);
Sleep(26);
SetBkMode(global_hdc, TRANSPARENT);
SetBkColor(global_hdc, RGB(0,0,0));
Draw_Sprite(ERASE);
        Move();
}这是画图函数:
int Draw_Sprite(int flag)
{
HBRUSH brush;
RECT rect;
if (flag == ERASE)
{
brush = CreateSolidBrush(RGB(0,0,0));
SetRect(&rect, BATTLE_LEFT - 35, 0, BATTLE_RIGHT + 35, WINDOW_HEIGHT - 1);
FillRect(global_hdc, &rect, brush); for(int i = 0; i < MissileList.size(); i++)
{
SetRect(&rect,MissileList[i].x, MissileList[i].y,
MissileList[i].x+MissileList[i].width,MissileList[i].y+MissileList[i].height);

brush = CreateSolidBrush(RGB(0,0,0));

FillRect(global_hdc, &rect, brush);
} }
else
{
brush = CreateSolidBrush(RGB(0,128,192));
SetRect(&rect, BATTLE_LEFT - 22, 1, BATTLE_LEFT - 20, BATTLE_HEIGHT - 1);
FillRect(global_hdc, &rect, brush);
SetRect(&rect, BATTLE_RIGHT + 20, 1, BATTLE_RIGHT + 22, BATTLE_HEIGHT - 1);
FillRect(global_hdc, &rect, brush);

////////////// SpaceShip//////////////////////////////////
SetRect(&rect,ship.x-ship.x_offset,ship.y-ship.y_offset,ship.x+ship.x_offset,ship.y+ship.y_offset);

brush = CreateSolidBrush(ship.color);

FillRect(global_hdc, &rect, brush);

/////////////Stone////////////////////////////////////////
for(int i = 0; i < StoneList.size(); i++)
{
SetRect(&rect,StoneList[i].x-StoneList[i].x_offset,StoneList[i].y-StoneList[i].y_offset,
StoneList[i].x+StoneList[i].x_offset,StoneList[i].y+StoneList[i].y_offset);

brush = CreateSolidBrush(StoneList[i].color);

FillRect(global_hdc, &rect, brush);
}

/////////////Enemy/////////////////////////////////////////

for(i = 0; i < EnemyList.size(); i++)
{
SetRect(&rect,EnemyList[i].x-EnemyList[i].x_offset,EnemyList[i].y-EnemyList[i].y_offset,
EnemyList[i].x+EnemyList[i].x_offset,EnemyList[i].y+EnemyList[i].y_offset);

brush = CreateSolidBrush(EnemyList[i].color);

FillRect(global_hdc, &rect, brush);
}

///////////Supply ////////////////////////////////////////

for(i = 0; i < SupplyList.size(); i++)
{
SetRect(&rect,SupplyList[i].x-SupplyList[i].x_offset,SupplyList[i].y-SupplyList[i].y_offset,
SupplyList[i].x+SupplyList[i].x_offset,SupplyList[i].y+SupplyList[i].y_offset);

brush = CreateSolidBrush(SupplyList[i].color);

FillRect(global_hdc, &rect, brush);
}


////////////Canon ///////////////////////////////////////

for(i = 0; i < CanonList.size(); i++)
{
SetRect(&rect,CanonList[i].x, CanonList[i].y,
CanonList[i].x+CanonList[i].width,CanonList[i].y+CanonList[i].height);

brush = CreateSolidBrush(CanonList[i].color);

FillRect(global_hdc, &rect, brush);
}


//////////////////Laser //////////////////////////////////

for(i = 0; i < LaserList.size(); i++)
{
SetRect(&rect,LaserList[i].x, LaserList[i].y,
LaserList[i].x+LaserList[i].width,LaserList[i].y+LaserList[i].height);

brush = CreateSolidBrush(LaserList[i].color);

FillRect(global_hdc, &rect, brush);
}

///////////////////Missile ///////////////////////////

for(i = 0; i < MissileList.size(); i++)
{
SetRect(&rect,MissileList[i].x, MissileList[i].y,
MissileList[i].x+MissileList[i].width,MissileList[i].y+MissileList[i].height);

brush = CreateSolidBrush(MissileList[i].color);

FillRect(global_hdc, &rect, brush);
}
} DeleteObject(brush);
return 0;
}