首页 > 代码库 > [C#技术参考]在PictureBox 中绘图防止闪烁的办法
[C#技术参考]在PictureBox 中绘图防止闪烁的办法
开篇之前说点别的,马上年终了,好希望年终奖大大的,但是好像这次项目的展示很重要,所以这几天绷得比较近,但是真的没有感觉烦,就是害怕来不及。所以抓紧了。下面直接正题。说一下用到的东西,都是Google搜索来的,但是这些技术真的能用到自己的项目中,自己做的东西等过年回家没事慢慢总结,现在先学习一下别人的东西,也算作一个笔记吧。
我需要在窗体上进行图片的绘制,但是在实际的测试中发现了问题,那就是重绘的时候会发生闪烁,这个问题在初学C语言的课程中也遇到过,在程序绘制动画的高频率刷新的时候,也会产生闪烁,而那时候的解决办法,是对动画进行双缓冲(Double Buffering)处理。
在被双缓冲这个名词吓到之前,我们先来探讨下为什么重绘的时候会发生闪烁:
说道动画的原理大家都懂,就是利用了人眼的视觉残留(Visual staying)现象,当一副画面进入人眼成像后,并不会立刻消失,而是仍会保留一小段时间,于是当连续的图像以很高的速度切换的时候,人眼会看到动态的影响,而不是处于切换中的单个图像。
这个过程可以参考图1:
当这三幅图片以一定频率直接切换的时候,人们就会看到A貌似是在向右方移动。
那么为什么我们依据这个原理来编程绘制动画的时候会出现闪烁呢?是因为计算机的速度太慢不够给力么?当然不是!
我们如果不加任何处理,就在画布Canvas上进行绘图,那么计算机的处理过程是这样的:
http://blueve.me/archives/633
[C#技术参考]在PictureBox 中绘图防止闪烁的办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。