MFC双缓冲绘图

1、为什么使用双缓冲?

我们都知道电脑CPU计算速度是非常快的,但是电脑要把信息显示到显示屏上,是比较慢的,因为显示屏要去更新像素点,假如我们要画1000条线,CPU画一条线只需要微秒,但是显示屏显示一条线需要1毫秒,如果我们不使用双缓冲,使用一个for循环输出1000条线,那么显示屏要刷新1000次才能完成1000条线的绘制,这会花掉1.001秒钟才能绘制一次我们想要的图形。很明显,这是非常低效率的。

使用双缓冲解决了什么呢?双缓冲是在内存中建立一张图纸,在图纸上做绘制,绘制完成后,将这张图纸显示到显示屏上。假设重新回到刚才的1000条线上。在内存中绘制1000条线,只需要1毫秒,然后把绘制好的图形输出到显示屏,也是1毫秒,最后,我们只用了2毫秒,就完成了我们想要的图形,所以,使用双缓冲绘制,是非常有必要的。

当然,我们可以使用只绘制一个小区域,来减少屏幕的刷新次数,但这不是我们为什么使用双缓冲要讨论的了。

2、MFC使用双缓冲的方法:

         第一步:关闭View本来的背景刷新。重载View的WM_ERASEBKGND消息,直接return TRUE;

BOOL CMyView::OnEraseBkgnd(CDC* pDC)
{
 // TODO: Add your message handler code here and/or call default
 return TRUE;
 return CView::OnEraseBkgnd(pDC);
}

      第二步:在OnDraw中使用双缓冲

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值