GDI+双缓冲

网上很多能搜索到的GDI+双缓冲的实现都是有错误的,终于找到了一个正确,分享给大家。


  

这里是在WM_PAINT消息里面处理的。首先创建一个Bitmap的对象,用来在上面进行画图。接着创建一个与之关联的Graphics对象。注意到上面调用了Graphics对象的Clear来把它刷成白色,至于作用等下再说明。

这时候就可以用graph进行画画了,这时候其实都只是画到Bitmap对象上去,还没有画到窗口上去,也就是只是先保存到内存中而已。

接着就创建一个与hdc相关联的Graphics对象了,这时候用graphics所做的操作都会显示到窗口上了。但由于我们之前是先把所有的操作在内存里都做好,再一次性显示到屏幕上,这样就提高了绘图速度。

但其实现在运行一下程序还是发现在缩放窗口时图片会闪烁,这里的原因是由于在缩放时程序会自动刷新背景,这时候就要在处理WM_ERASEBKGND消息时直接return TRUE。这样就告诉Windows我们会自己进行刷新,但实际上这时我们什么都没做。上面调用了Graphics对象的Clear方法就是来处理背景的刷新,由于这时是在内存中做好的,所以就不会再出现闪烁的问题了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值