VC显示双缓冲

2016-02-19 20:11 4 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享VC显示双缓冲吧。

【 tulaoshi.com - 编程语言 】

当应用程序中使用多次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对象中,

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

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

     for(int i=0;iN;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);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1622971.html

延伸阅读
vc 中动态显示bmp 的方法大致是三种:(我以320×240×1的255色灰度图举例) 1:将bmp导入资源中,这是最方便的,但同时也是最不灵活的,而且也费资源。 使用CBitmap 的LoadBmp(..) 2:可以通过 hBitmap=(HBITMAP) ::LoadImage(NULL,picname,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION); 具体使用可以参考msdn,我一开始接...
用vc++写console程序时,整天对着黑纸白字的屏幕,感觉很郁闷吧?很多人想用CONIO.H/GRAPHICS.H中的一些函数来实现,却发现VC++根本没有这些头文件。当然了CONIO.H/GRAPHICS.H是BORLAND TC/BC专有的头文件,所以vc++中根本没有这些文件。把这两个头文件COPY过来,然后用??答案当然是否定的。其实VC++中也有相关的函数来实现console彩色文...
当开发基于软件模式的游戏时,通过缩放视频缓冲区来适应显示尺寸是最棘手的问题之一。当面对众多不同的分辨率时(比如开放环境下的Android),该问题会变得更加麻烦,作为开发人员,我们必须尝试在性能与显示质量之间找到最佳平衡点。正如我们在第2章中看到的,缩放视频缓冲区从最慢到最快共有3种类型。 软件模拟 :3中类型中最慢,但最容易实...
标签: 电脑入门
1.首先,打开wps文字,正常的输入 2.写到下一页的时候,单击右边的按钮,即可达到双页的效果
标签: 电脑入门
双显示输出的好处很多,就拿演示PowerPoint课件为例,你可以在主显示器上控制播放,而在辅显示器上(投影机端)输出演示(如图)。要实现这样的功能,往往需要一块双头显卡。其实,如果使用PowerPoint 2007,也可轻松实现双显示输出功能。 运行PowerPoint 2007,切换到幻灯片放映选项卡,通过演示文稿显示位置设置演示文稿在哪个显示器上显示...

经验教程

281

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部