标签:
我需要在窗体上进行图片的绘制,但是在实际的测试中发现了问题,那就是重绘的时候会发生闪烁,这个问题在初学C语言的课程中也遇到过,在程序绘制动画的高频率刷新的时候,也会产生闪烁,而那时候的解决办法,是对动画进行双缓冲(Double Buffering)处理。
在被双缓冲这个名词吓到之前,我们先来探讨下为什么重绘的时候会发生闪烁:
说道动画的原理大家都懂,就是利用了人眼的视觉残留(Visual staying)现象,当一副画面进入人眼成像后,并不会立刻消失,而是仍会保留一小段时间,于是当连续的图像以很高的速度切换的时候,人眼会看到动态的影响,而不是处于切换中的单个图像。
这个过程可以参考图1:
当这三幅图片以一定频率直接切换的时候,人们就会看到A貌似是在向右方移动。
那么为什么我们依据这个原理来编程绘制动画的时候会出现闪烁呢?是因为计算机的速度太慢不够给力么?当然不是!
我们如果不加任何处理,就在画布Canvas上进行绘图,那么计算机的处理过程是这样的:
[C#技术参考]在PictureBox 中绘图防止闪烁的办法
标签:
原文地址:http://www.cnblogs.com/stemon/p/4206974.html