Ram*_*lol 2 c++ winapi gdi repaint visual-c++
我试图用gdi创建球动画,但我不能让它工作.我用它创造了一个球
Graphics graphics(hdc);
Run Code Online (Sandbox Code Playgroud)
钢笔(颜色(255,0,0,255)); graphics.DrawEllipse(&pen,sf,0,10,10); 我有while循环,循环并添加1到sf值基本上像这个sf ++; 比我尝试重新绘制窗口(它不起作用)所以生病最终有一个以上的圈; /这里是循环(循环是int WM_PAINT)
while(sd==1)//sd equals 1
{
sf++;
onPaint(hdc);
InvalidateRect (hWnd, NULL, TRUE);// this should repaint the window but it doesn't
UpdateWindow(hWnd);
}
Run Code Online (Sandbox Code Playgroud)
提前谢谢拉米
为了实现动画,我建议你使用计时器.例如:
int OnCreate(HWND window, WPARAM wParam, LPARAM lParam)
{
SetTimer(window, TIMER_ID, 1000, 0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在窗口将每秒(1000毫秒)收到WM_TIMER消息.你应该处理它们:
int OnTimer(HWND window, WPARAM wParam, LPARAM lParam)
{
if(TIMER_ID == wParam)
{
/*do stuff*/
InvalidateRect(window, NULL, TRUE);//force window to repaint
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
那么你需要处理WM_PAINT消息来进行绘图
int OnPaint(HWND window, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC dc = BeginPaint(&ps);
Graphics graphics(hdc);
graphics.Draw...
EndPaint(&ps);
return 0;
}
Run Code Online (Sandbox Code Playgroud)