关于背景闪烁的问题

mouseleeky 2004-03-30 06:49:58
我重写了OnCtlColor函数,返回了一个含有CBitmap的刷子,用它来绘制对话框的背景为一幅图片。现在有一个定时器消息需要处理,每次处理完了此消息都需要重画背景图片,于是我在OnTimer函数里调用Invalidate函数。但是背景图片重画的时候总是闪烁。请问应该怎么办?
...全文
68 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mouseleeky 2004-03-30
  • 打赏
  • 举报
回复
楼上各位说得都对,但现在有这么一个问题,导致我不想使用双缓存。
如果用双缓存的话,那个不是背景图片,而是在对话框背景上贴了一幅图片,
这时我在为对话框上的控件调用SetBkMode(TRANSPARENT)时,控件认为透明色为
背景色,而不是刷上的图片的颜色。各位在开导一下吧,谢谢。
aspnetwuxueyou 2004-03-30
  • 打赏
  • 举报
回复
通过内存DC来解决,具体做法是创建一幅位图,将其选入位图DC,然后用内存DC来绘制图形(而不是直接绘制在屏幕),图形绘制完毕后一次性导入到屏幕显示,避免多次写屏出现的闪烁。
keansun 2004-03-30
  • 打赏
  • 举报
回复
象楼上的说的那样,用双缓冲,如果还有,那么把WM_ERASEBKGND消息处理给屏蔽了,(return TRUE即可)
top_hipster 2004-03-30
  • 打赏
  • 举报
回复
使用双缓冲,禁止重画背景!
babam 2004-03-30
  • 打赏
  • 举报
回复
双缓冲

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧