设为首页 加入收藏

TOP

VC界面绘制双缓存(二)
2014-11-23 21:25:03 】 浏览:919
Tags:界面 绘制 双缓存
过CDC::GetClipBox来获得裁剪区域的大小。
因此,对双缓存的优化代码如下所示:

void CDoubleBufferView::DrawWithBufferEfficient(CDC* pDC)

{

ASSERT_VALID(pDC);

/*创建内存DC*/

CDC dcMemory;

dcMemory.CreateCompatibleDC(pDC);

dcMemory.SetBkColor(pDC->GetBkColor());

/*设置内存DC的画板,大小与输入DC的裁剪区域一样*/

/*只对裁剪区域进行重新绘制*/

CRect rectClip(0,0,0,0);

pDC->GetClipBox(&rectClip);

CBitmap bmpMemory;

bmpMemory.CreateCompatibleBitmap(pDC,

rectClip.Width(), rectClip.Height());

dcMemory.SelectObject(&bmpMemory);

/*设置内存DC的起始点*/

dcMemory.SetViewportOrg(-1*rectClip.left, -1*rectClip.top);

/*粉刷背景*/

dcMemory.FillSolidRect(&rectClip, pDC->GetBkColor());

DrawDirect(&dcMemory);

/*把内存DC复制到输入DC中*/

pDC->BitBlt(rectClip.left, rectClip.top, rectClip.Width(), rectClip.Height(),

&dcMemory, rectClip.left, rectClip.top, SRCCOPY);

/*释放资源*/

bmpMemory.DeleteObject();

dcMemory.DeleteDC();

}

5、工程源代码下载

http://files.cnblogs.com/xianyunhe/DoubleBuffer.rar

摘自 http://www.cnblogs.com/xianyunhe/archive/2011/11/20/2255811.html


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇一般函数指针和类的成员函数指针 下一篇vc编译时候是否生成检查局部变量..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目