GDI+学习笔记(四)Bitmap与双缓冲


本文利用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的位置,根据实际需要,可以进行调整。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值