我的VC之路--VC显示双缓冲

转载 2007年09月18日 18:07:00

当应用程序中使用多次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.LintTo(i,N);
     }

    Rectangle(hdcMem,0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
   DrawMenuButton(hdcMem);

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

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

7、最后别忘了,

    memdc.SelectObject(poldbmp);

相关文章推荐

VC++显示图像闪烁与双缓冲的问题

窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用 新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应很频繁的时...
  • Liang4
  • Liang4
  • 2011年12月13日 09:15
  • 1281

VC双缓冲实现方法

  • 2012年04月10日 02:28
  • 116KB
  • 下载

VC++双缓冲代码关于曲线部分

  • 2011年05月10日 17:36
  • 46KB
  • 下载

MFC VC 双缓冲绘图基本原理与实现,详细解释

MFC VC 双缓冲绘图基本原理与实现,详细解释 MFC做了一些时间了,不得不面对 的是在界面上画图的。 当然你可以直接搜索到能用的代码,并且基本能满足要求。不过这样总不是学习的态...

vc++ api 双缓冲绘图

当绘制动态图形时,会遇到图像闪烁的情况,分析一下原因: 电脑屏幕一般都是60HZ的,也就是说一秒钟刷新60次, 但是api绘图却没这么快,本身绘图就要循环,这里面还要加上描点连线, 我们把绘图看成一个...

VC 画表格 双缓冲 滚动条

  • 2010年01月04日 12:21
  • 3.52MB
  • 下载

VC实现滚动视图双缓冲绘图

  • 2008年06月26日 22:12
  • 27KB
  • 下载

VC 双缓冲绘图

在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的VC之路--VC显示双缓冲
举报原因:
原因补充:

(最多只允许输入30个字)