GDI+学习笔记(四)Bitmap与双缓冲
来源:互联网 发布:北京量子数据 编辑:程序博客网 时间:2024/05/07 16:33
本文利用Bitmap实现双缓冲,与游戏编程系列实现双缓冲的文章有些交叉。但本文更加强调GDI+技术的实现。
这里需要再重复一遍双缓冲机制和原理。我们将我们希望的数据送付给图形设备,是一个相对于内存操作比较耗时的操作,如果我们频繁地进行这样的交互,就会极大的影响其效率。所以,我们会在内存中先绘制完成,将最终的目标一起送付给图形设备,这样就可以避免一些闪烁等问题。
这里使用双缓冲,是将目标图形都绘制到一个Bitmap结构中,然后将Bitmap,也就是位图一起送付给图形设备完成绘制,与上一节中的绘制相比,我们只是增加了一个过程而已。
重点知识总结:
1. GDI+中,不但可以使用HDC来进行初始化,也可以使用Bitmap指针来进行初始化Graphics对象初始化,二者的差异在于,Graphics绘制的目标,一个在图形DC对应的设备上,一个绘制在Bitmap中,Bitmap是内存中的一个块数据,所以会知道Bitmap的速度要远高于图形设备。
2. Bitmap的初始化种类也很多,这里,我们使用宽和高来对其初始化。
3. DrawImage,不但可以绘制Image图元,也可以绘制Bitmap图元。
现在看代码,
1. 初始化用于缓存的Bitmap,并为该Bitmap构造一个Graphics类
Bitmap CacheImage( fClientWidth, fClientHeight);Graphics CacheGraphics( &CacheImage );
2. 之后将其他需要绘制的图元绘制到这个缓存的Graphics结构中,这里的绘制和上一节中的绘制没有任何区别,只不过这次是画在了CacheGraphics中而已。
3. 将Bitmap绘制到最终的雨设备相关的Graphics中,ok手工
m_pGraphics->DrawImage(&CacheImage, 0, 0);
这里的0和0是在最终目标中Bitmap的位置,根据实际需要,可以进行调整。
1 0
- GDI+学习笔记(四)Bitmap与双缓冲
- GDI+学习笔记四-双缓冲图形类
- C++/GDI+ 学习笔记(四)——实用技巧——双缓冲(Double Buffer)
- C++/GDI+ 学习笔记(四)——实用技巧——双缓冲(Double Buffer)
- GDI双缓冲实现与GDI+双缓冲实现
- Qt学习笔记(四) 双缓冲
- MFC设计局域网对战五子棋游戏(四)GDI+和GDI混合双缓冲绘图
- Gdi+与双缓冲的图片显示(应用篇)
- Gdi+与双缓冲的图片显示(应用篇)
- C++/GDI+ 学习笔记(六)——实用技巧——双缓冲(Double Buffer)
- 逐梦旅程学习笔记 Windows/GDI 示例02:双缓冲贴图/绘制自由线条
- 小明陪你编游戏系列(四)GDI+实现双缓冲
- GDI双缓冲绘图
- gdi+ 双缓冲技术
- GDI双缓冲绘图
- GDI+双缓冲
- GDI+中的双缓冲
- GDI+ VC双缓冲
- μCOS-II系统之事件(event)的使用规则及Semaphore实例
- ios测试-(一)使用XCTest进行单元测试
- Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(二)
- NYOJ163免费的馅饼
- Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(三)
- GDI+学习笔记(四)Bitmap与双缓冲
- ajax 简单实例
- TCP/IP详解(1)
- iOS测试-(二)OCMock和GHUnit
- Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(四)
- POJ 1552 Doubles
- excel的使用技巧大全
- 阿里巴巴2012校园招聘笔试题
- Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(五)