使用双缓冲技术可轻松消除闪烁

当应用程序中使用多次GDI调用绘制到窗口中时,在窗口清除并被重新绘制时,会出现明显的闪烁。使用双缓冲技术可轻松消除闪烁。

步骤如下:

1、假设当前显示设备上下文为CDC * pDC;

2、使用CDC对象创建可兼容设备上下文,

      CDC memdc;

      memdc.CreateCompatibleDC(pDC);

3、使用CBitmap对象创建可兼容为图,

      CBitmap bmp;

      bmp.CreateCompatibleBitmap(pDC,SCREEN_WIDTH,SCREEN_HEIGHT);

4、将CBitmap对象选入CDC对象中,

     CBitmap *poldbmp=memdc.SelectObject(&bmp);

5、绘图操作,在memdc中进行,如:

     for(int i=0;i<N;i++)
    {
              memdc.MoveTo(i,0);
              memdc.LineTo(i,N);
     }

  6、使用BitBlt函数将memdc内容拷贝至pDC

pDC->BitBlt(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,&memdc,0,0,SRCCOPY);

7、最后别忘了,//资源清理

memdc.SelectObject(poldbmp);
        Poldbmp->DeleteObject();
Memdc->DeleteDC();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值