c++ - 如何使用 Window 的 C++ 图形 (GDI+) 库移动对象?

标签 c++ windows api graphics gdi+

到目前为止,我只复制/粘贴了 Microsoft 的示例 here (但我删除了#include)。

我试图弄清楚 OnPaint 是如何被不断调用的(因为有移动的物体),但它似乎被调用的次数不超过一次。

如何使用标准 Windows C++ 图形库(即 GDI+ 或其他标准 Windows API)创建移动对象?我必须自己调用 OnPaint 吗?或者是否有一个简单的修复方法可以让它不断被调用?还是根本不可能?

最佳答案

OnPaint() 方法只会在 Windows 认为您的窗口需要重新绘制时运行。通常,首次创建窗口时只发生一次。或者当您最小化和恢复窗口时。

要强制它运行不止一次并为某些东西设置动画,您必须告诉它需要重绘。最好的方法是使用计时器,它会给你一个动画时钟。将间隔设置为略小于 15.625 毫秒的倍数的数字。 45 毫秒是一个不错的值,它让你每秒更新 21 次。假设你可以画得足够快。在 WM_TIMER 消息处理程序中调用 InvalidateRect()。或者 Invalidate() 如果你使用 Winforms。

关于c++ - 如何使用 Window 的 C++ 图形 (GDI+) 库移动对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421581/

相关文章:

使用 tkinter 的 Python 多线程

C 计算数据点数量 %d\n 与 %lf\n

json - 响应中的有效 JSON

api - Flask REST api 资源 URL 建议

c++ - 在运动过程中禁用 Sprite 旋转

c++ - SMTP 身份验证 QT/C++

c++ - 遗留设备上下文太粗糙

c++ - Makefile 未链接必要的 .hpp 文件

c++ - 如何编写一个好的程序来阻止不需要的/有害的网站

android - 用gradle构建Spotify包装器后没有生成任何aar文件