Head First C# 中文版 第13章 控件和图形 page608

双缓冲可以使得动画更加平滑


回到图片缩放器,随便玩玩上面的TrackBar 。注意到拖动滑块的时候,有很多的闪烁了么?这是因为每次滑块移动一点, Paint 事件的处理器就要绘制白色矩形和图片。当你的眼睛每秒钟看到很多次交替的白色矩形和图片的时候,就会感觉到闪烁。这很可恶 ... 而这是可以通过使用一种叫做双缓冲的技术来避免的。这就是说,把每一帧绘制到一个不可见的 Bitmap 上去(一个“缓冲”),只在一帧被绘制完成之后才把它显示出来。下面是该方法使用 Bitmap 的方式:


这是一个典型的使用Graphics 来把图形绘制到窗体的程序:


 

要做双缓冲的话,可以添加一个Bitmap 到程序中去充当缓冲器的角色。这样,每当窗体或者控件需要重绘的时候,图形就可以绘制到缓冲器上而不是窗体上去。


 

现在一帧已经绘制到一个不可见的Bitmap 上了,我们可以使用 DrawImageUnscaled ()方法来把 Bitmap 复制回窗体的 Graphics 去。复制是一次性完成的,这就避免了闪烁。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值