首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中使用GDI+平滑动画

在C++中使用GDI+平滑动画
EN

Stack Overflow用户
提问于 2018-05-20 02:36:23
回答 1查看 749关注 0票数 0

我在C++中使用GDI+获得简单流畅的动画时遇到了麻烦。我目前的方法是使用here中描述的WinAPI计时器。我正在用SetTimer初始化计时器,时间间隔为15ms。然后,当相应的WM_TIMER事件发生时,我递增矩形的左上角坐标,调用整个屏幕的InvalidateRect并绘制该矩形。结果是像预期的那样移动,但有规律的闪烁(参见video)。这似乎随着时间间隔的不同而变化,但它总是存在的。

问题是我如何修改这种方法来实现流畅的动画?我发现的大多数类似问题都与C#有关,其中的工具集似乎有一点不同。

编辑:忘记添加-这是一个学校项目,所以改变技术或语言对我来说并不是一个真正的选择。

EN

Stack Overflow用户

发布于 2018-05-20 14:45:56

InvalidateRect中的bErase使用FALSE标志。

代码语言:javascript
运行
复制
InvalidateRect( hwnd, NULL, FALSE );

或处理WM_ERASEBKGND消息

代码语言:javascript
运行
复制
LRESULT CALLBACK YourWindowProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam )
{
    switch ( msg )
    {
    case WM_ERASEBKGND:
        // Don't paint background if you are blitting from off screen surface.
        return 1;
    }
    return DefWindowProc( hwnd, msg, wparam, lparam );
}

或者将NULL笔刷放在窗口类(用于RegisterClass)的定义中。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50428349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档