例如Pacman。嘴巴關閉或打開。當它移動時,這些圖片會彼此改變。 我試圖做這樣的如何在移動對象時更改圖片
case WM_PAINT:
......
if (ChoosePictureInt==0)
{
MaskBlt(mdc,my_pos.x,my_pos.y,my_size.cx,my_size.cy,my_dc,0,0,my_closemask,0,0,MAKEROP4(SRCCOPY,SRCPAINT));
MaskBlt(mdc, my_pos.x, my_pos.y, my_size.cx, my_size.cy, my_dc, 0, 0, my_mask, 0, 0, MAKEROP4(SRCCOPY, SRCPAINT));
}
但作爲一個結果,我已經得到了在窗口只有最後一張照片。 當我想要做這樣的(如果WM_TIMER)
case WM_TIMER:
if(LOWORD(wParam) == 777u) {
if(GetAsyncKeyState(VK_LEFT))
{
if (GreatFuncLeftRight(my_pos.x,my_pos.y))
{
ChoosePictureInt = 1;
if (ChooseMouseInt == 0)
ChooseMouseInt = 0;
else ChooseMouseInt = 0;
my_pos.x -= 2; // влево
MaskBlt(mdc, my_pos.x, my_pos.y, my_size.cx, my_size.cy, my_dc, 0, 0, my_mask, 0, 0, MAKEROP4(SRCCOPY, SRCPAINT));
}
else my_pos.x-=0;
}
什麼也沒有發生
我的回答
那怎麼我已經解決了這個問題(我不認爲它的最好辦法)
//for examp. for -> direction
if(GetAsyncKeyState(VK_RIGHT))
{
if (GreatFuncLeftRightReverse(my_pos.x,my_pos.y))
{
ChoosePictureInt = 0; //variable for picture with direction
ChooseMouseInt *=-1; //variable for closed or opened mouth
my_pos.x += 5; // вправо
}
else my_pos.x+=0;
}
這是事件WM_PAINT
......
if (ChoosePictureInt==0)
{
if(ChooseMouseInt<0)
{
Sleep(85);
MaskBlt(mdc,my_pos.x,my_pos.y,my_size.cx,my_size.cy,my_dc,0,0,my_mask,0,0,MAKEROP4(SRCCOPY,SRCPAINT));
}
else
{
Sleep(85);
MaskBlt(mdc, my_pos.x, my_pos.y, my_size.cx, my_size.cy, my_dc4, 0, 0, my_closemask, 0, 0, MAKEROP4(SRCCOPY, SRCPAINT));
}
}
.....
不要在WM_TIMER處理程序中繪製。只在WM_PAINT中繪製。 –