双缓存

转载 2016年06月01日 13:37:05
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象


//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);


//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);


//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));


//绘图
MemDC.MoveTo(……);
MemDC.LineTo(……);


//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);


//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();


补充说明PS:

    你完全没有理解什么是双缓存。。。。
这里所说的双缓存实际上就是双页面(双DC),也就是说我们需要两个DC。
第一个DC,你已经提供了,那就是传入Draw函数的pDC,这个DC就是主页面,任何在该页面上的操作都会直接展现给用户。
但我们还需要另一个DC,这个DC就是离屏页面,对该页面的操作不会直接展出给用户,所有绘图操作都必须在该页面上进行。
不要说你已经提供了一个,你所写的memDC只是个局部DC,作用微乎其微,甚至可能还会使效率下降。
离屏DC应该是与你的CImage的对象的生命周期相同,通常的实现就是为你的CImage添加两个成员:
CDC m_offscreenDC; CBitmap m_offscreenBitmap;,
在你的CImage构造时就初始化好m_offscreenBitmap和m_offscreenDC,剩下的就是,
所有的绘图操作都输出只输出到m_offscreenDC上,你的Draw函数只需要一个函数,
那就是BitBlt,只需要简单的把m_offscreenDC上的内容blt到pDC上。。。



相关文章推荐

双缓冲(Double Buffer)原理和使用

一、双缓冲作用            双缓冲甚至是多缓冲,在许多情况下都很有用。一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。这样的情况在很多地方后可能会发生,使用多缓冲...
  • acs713
  • acs713
  • 2013年11月16日 18:50
  • 24929

双缓冲(Double Buffer)原理和使用

一、双缓冲作用            双缓冲甚至是多缓冲,在许多情况下都很有用。一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。这样的情况在很多地方后可能会发生,使用多缓冲...

win32下双缓冲原理及实现

一:双缓冲原理   为了解决窗口刷新频率过快所带来的闪烁问题,利用双缓冲技术进行绘图。所谓双缓冲技术,就是将资源加载到内存,然后复制内存数据到设备DC(这个比较快),避免了直接在设备DC上绘图(...

Opengl 单双缓冲区区别

转自http://blog.csdn.net/mfcappwizard/article/details/6965617 单缓冲,实际上就是将所有的绘图指令在窗口上执行,就是直接在窗口上绘图,这样的绘...

内存中绘图 Memdc

内存中绘图 Memdc CDC MemDC;   //首先定义一个显示设备对象,所有的绘制首先绘制到这块内存中 CBitmap MemBitmap; //定义一个位...

双缓存实现无闪烁绘图

  • 2012年04月18日 16:30
  • 44KB
  • 下载

vc利用双缓存处理界面刷新的实例

  • 2011年08月04日 14:33
  • 3.42MB
  • 下载

STM32F103 定时器+ADC+DMA中断+双缓存+实现数据采集

功能 TIM1_CC1触发ADC1进行采样,采样使用DMA进行数据传输,DMA启用半满和全满中断,在中断中进行数据保存到其他Buff,方便进行处理。 完整工程下载:http://download....

双缓存简单演示的代码。

  • 2010年07月29日 11:08
  • 35KB
  • 下载

VC利用双缓存解决闪屏

  • 2008年05月29日 09:46
  • 146KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:双缓存
举报原因:
原因补充:

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