双缓冲技术的简单使用
来源:互联网 发布:七氟烷的mac值 编辑:程序博客网 时间:2024/05/16 00:41
所谓需要的时候才想到去寻找。
我的程序里面需要用了一个动换场面,但是GDI简单的动画实现,不可避免的让我的显示器闪动不已,我知道,要么放弃GDI而用DirectX,要么就用双缓冲技术,于是,我去google了,找到了很多篇文章,其实只有一篇,呵呵
在此记录下来:
在OnDraw或者OnPaint函数中加入如下代码:
CClientDC dc(this);
CRect rect;
GetWindowRect(&rect);
int nWidth = rect.Width();
int nHeight= rect.Height();
CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(&dc, nWidth, nHeight);
CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0, 0, nWidth, nHeight, RGB(255, 255, 255));
//在MemDC上绘出所有画面
//…
dc.BitBlt(0, 0, nWidth, nHeight, &MemDC, 0, 0, SRCCOPY);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
//-----------------end------------------
写下了这些代码后,我发现我的显示器还是不争气的闪烁,肯定有什么地方不对了。寻找这个失误花了我很多时间,呵呵,我们还需要重写WM_ERASEBKGND的消息处理函数,并返回真,也就是说只是把OnEraseBkgnd的代码增加一条return true;
^_^这样就可以了哈!!
Thursday, September 22, 2005
- 双缓冲技术的简单使用
- 使用双缓冲技术实现简单画图板
- 简单的页面缓冲技术
- C#: GDI+双缓冲技术的使用
- 双缓冲技术绘图原理及简单的VC实现
- 双缓冲技术绘图原理及简单的VC实现
- 缓冲技术之二:缓冲池BufferPool的简单实现
- 简单的页面缓冲技术(三)
- 简单的页面缓冲技术(二)
- 简单的页面缓冲技术(一)
- AWT的双缓冲技术
- java的双缓冲技术
- 简单的双缓冲画板
- 使用双缓冲技术绘制曲线图
- VC 绘图,使用双缓冲技术实现
- VC 绘图,使用双缓冲技术实现
- VC 绘图,使用双缓冲技术实现
- VC 绘图,使用双缓冲技术实现
- FreeBSD5.3 + Apache + ssl认证
- JavaScript[对象.属性]集锦
- 编译优化自己的FreeBSD
- WPS 2005看起来还是蛮不错的
- FreeBSD 设置网卡IP,网关和DNS
- 双缓冲技术的简单使用
- TechEd 2005游记(一)
- Perl与系统管理
- 用Perl实作网站程序
- 今天心情不错
- .NET中的设计模式一:工厂模式
- 05/09/22(夜)
- .Net中的设计模式——Factory Method模式
- 面向对象程序设计(OOD)和面向对象编程(OOP)