wxWidgets避免闪烁, 绘制卡的原因

MFC里面是CMemDC,能让每一步画的结果都绘制在一个memory dc中。实际上也就是在RAM中跟windows的DC尺寸一样的一块内存,数据绘画的结果如果启用该DC,就会绘到该memory中。


对于闪烁,深层次的原因是在没有启用memory的时候,绘制的每一步的结果(画线的过程中,可能会逐步影响到绘制表面的一个一个像素;绘制图像更是;)都直接作用到了显示器会来抓取画面的内存中,所以这边在画,那边在抓数据用来显示。如果画的过程不够快,就容易让人看到画的过程,就形成我们的闪烁(flickering)。


使用上memory dc,或者是double buffer后,当前绘画代码的结果的作用内存,跟显示器显示的内存完全就分割开来。可以利用整块内存拷贝的方法快速的交换显示区域和绘制区域,从而消除flickering。


在wxWidgets中, 可以用wxBufferedPaintDC来启动类似CMemDC或者是Double buffer的机制。用这个类,需要包含头文件"wx/dcbuffer.h"。


另外,我们很有可能在绘制的过程中,接收鼠标移动消息并绘制物品,如果发现绘制滞后,尝试调用Update()。立即更新画面试试。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值