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

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


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


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


 

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


Head First C# 中文版 第13章 控件和图形 page608_第1张图片

 

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


你可能感兴趣的:(Head First C# 中文版 第13章 控件和图形 page608)