码迷,mamicode.com
首页 > 其他好文 > 详细

MFC双缓冲绘图

时间:2014-05-06 00:21:03      阅读:450      评论:0      收藏:0      [点我收藏+]

标签:style   ext   color   width   get   com   

在双缓冲方法中,首先要做的是屏蔽背景刷新。背景刷新其实是在响应WM_ERASEBKGND消息。我们在视类中添加对这个消息的响应,可以看到缺省的代码如下:

BOOL CMYView::OnEraseBkgnd(CDC* pDC)

{

      return CView::OnEraseBkgnd(pDC);

}

是调用父类的OnEraseBkgnd函数,我们屏蔽此调用,只须直接return TRUE;即可。

 

 

CDC dcMem;                                                  //用于缓冲作图的内存DC

CBitmap bmp;                                                 //内存中承载临时图象的位图

dcMem.CreateCompatibleDC(pDC);               //依附窗口DC创建兼容内存DC

bmp.CreateCompatibleBitmap(&dcMem,rect.Width(),rect.Height());//创建兼容位图

dcMem.SelectObject(&bmp);                          //将位图选择进内存DC

dcMem.FillSolidRect(rect,pDC->GetBkColor());//按原来背景填充客户区,不然会是黑色

//////////////////////////////////////////////////////////////////

绘图部分代码,使用dcMem,不要用pDC。

/////////////////////////////////////////////////////////////////

pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//将内存DC上的图象拷贝到前台

dcMem.DeleteDC();                                       //删除DC

bm.DeleteObject();                                        //删除位图

 

MFC双缓冲绘图,布布扣,bubuko.com

MFC双缓冲绘图

标签:style   ext   color   width   get   com   

原文地址:http://www.cnblogs.com/lpjdbk/p/3704491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!