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)

{

CGestureDemoDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

 

CMemDC dcMem(*pDC, this);

CDC& dc = dcMem.GetDC();

//用dc来绘图就可以实现栓缓冲

......

}

VS低版本中CMemDC使用方法。在低版本中可以导入一个继承于CDC的类CMemDC,使用的时候需要使用#include "MemDC.h",点击此处下载

使用方法与之前的类似,只需要用一个CDC的对象初始化就行。

CMemDC pMemDC(pDC);

总结完毕,如果还有什么其他方法请各位多多指教哈~部分资料来自这里

 标签: VC, 双缓冲

作者  :  sailor

仅仅看明白了还不够,能把别人给讲明白了才算及格。


  1. 105
    1#
    105"主席

    [face:yiwen][face:yiwen]这个看不懂啊!!!以后写点平民化的嘛![face:daku]

    October 30th, 2011 at 06:03 pm 回复
      1. sailor
        sailor

        我去,主席又装了

        October 31st, 2011 at 12:18 am 回复
  2. MurphyL
    2#
    MurphyL

    恩~~还来啊?看不懂~~

    October 30th, 2011 at 07:29 pm 回复
      1. sailor
        sailor

        嘿嘿,以后这个有很多哦~

        October 31st, 2011 at 12:18 am 回复
  3. 我觉得你应该再弄个站 写专业代码的东西 最近我弄了子站专门记录代码的

    October 30th, 2011 at 07:44 pm 回复
      1. sailor
        sailor

        懒得折腾了,现在感觉一个站都没有时间维护了~

        October 31st, 2011 at 12:19 am 回复
  4. 宇帆
    4#
    宇帆

    恩。现在正在学习这个的说哦。

    October 30th, 2011 at 10:43 pm 回复
      1. sailor
        sailor

        不会吧,你们也学习这个啊??

        October 31st, 2011 at 12:19 am 回复


最新文章