VC双缓冲绘图小记2
之前写过一篇小文《VC双缓冲绘图小记》,这期间一直在折腾这个东西,因为绘图时候的闪烁总让我感到不可接受,所以这是对于上一篇博客的补充版本,也可说是VC双缓冲绘图补丁版。
废话不多说,首先要感谢C瓜哥的提醒,在高版本的VS中已经自带了一个CMemDC类,利用这个类可以放心的绘图了,不用再去搞复杂的双缓冲了。PS:高版本=(VS2008SP1以及以后),低版本的后面也有介绍。
先说一下高版本的方法,也是本人现在使用的方法,因为这个方法系统自带,无需导入第三方文件。使用方法如下:
STEP 1 响应WM_ERASEBKGND消息
返回FALSE,这样就不擦除背景了。
BOOL CDemoView::OnEraseBkgnd(CDC* pDC) { return FALSE; }
STEP 2 在需要作图的地方使用CMemDC
void CDemoView::OnDraw(CDC* pDC)VS低版本中CMemDC使用方法。在低版本中可以导入一个继承于CDC的类CMemDC,使用的时候需要使用#include “MemDC.h”,点击此处下载{
CGestureDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CMemDC dcMem(*pDC, this);
CDC& dc = dcMem.GetDC();
//用dc来绘图就可以实现栓缓冲
……
}
使用方法与之前的类似,只需要用一个CDC的对象初始化就行。
CMemDC pMemDC(pDC);
总结完毕,如果还有什么其他方法请各位多多指教哈~部分资料来自这里