双缓冲技术的简单使用
2005-09-22 23:34
225 查看
所谓需要的时候才想到去寻找。我的程序里面需要用了一个动换场面,但是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
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
相关文章推荐
- Web端服务器推送技术原理分析及dwr框架简单的使用
- Python中使用摄像头实现简单的延时摄影技术
- S1.1_Struts2_Model2 手动创建一个简单的servlet项目,未使用Struts技术
- PHP实现依赖注入-使用反射机制和动态代理技术 - 简单思想(咋个办呢 zgbn)
- 使用双缓冲技术绘制曲线图
- 使用双缓冲技术可轻松消除闪烁
- Java技术_每天掌握一种设计模式(005)_使用场景及简单实例(创建型:建造模式)
- Java技术_每天掌握一种设计模式(006)_使用场景及简单实例(创建型:原型模式)
- 淘宝的新Sprite方法——使用Img Sprite技术对按钮加载顺序优化的简单研究
- Java技术_每天掌握一种设计模式(002)_使用场景及简单实例(创建型:单例模式)
- 居合斩!一个简单的技术轻松多思路找使用背包物品CALL。
- Android端服务器推送技术原理分析及XMPP简单的使用(转)
- 使用双缓冲技术解决动画播放闪烁问题
- 线程锁---Lock接口技术的简单使用
- Web端服务器推送技术原理分析及dwr框架简单的使用
- Web端服务器推送技术原理分析及dwr框架简单的使用
- 简单的使用自动化技术实现用WORD读取一个XML文件的过程~
- Java技术_每天掌握一种设计模式(004)_使用场景及简单实例(创建型:抽象工厂)
- Android端服务器推送技术原理分析及XMPP简单的使用
- 简单的win32应用程序:弹跳的小球(使用双缓冲)