Java 双缓冲技术消除图片闪动
一般在使用Canvas组件刷新显示图片或者绘图的时候,会产生闪烁。这是由于机制是先使用背景色对原有内容进行覆盖,再往上面绘制新内容所引起的。我们看到的闪烁就是背景色和新内容之间的交替显示。
下面为Canvas中的update()方法的代码
public void update(Graphics g) { g.clearRect(0, 0, width, height); paint(g); }
从上面可以看出,每当update的时候,首先用背景色对原有内容进行填充,然后再进行绘制。
下面利用双缓冲技术消除闪烁。原理:在刷新之前将要刷新的内容在内存中准备好,刷新的时候不进行填充背景色,直接将内存中的内容画出来。这就要重写update()方法了。
下面为重写的update()方法代码:
class graph extends Canvas { private Image buffer;//声明图片缓冲区 public void paint(Graphics g) { //画图代码 } public void update(Graphics g) { buffer=createImage(getWidth(),getHeight());//创建图片缓冲区 Graphics gBuffer=bufferImage.getGraphics();//获得图片缓冲区的画笔 if(gBuffer!=null) paint(gBuffer); else paint(g); gBuffer.dispose(); g.drawImage(bufferImage, 0, 0,null); } }
本文出自 “飞鱼技术” 博客,请务必保留此出处http://flyingfish.blog.51cto.com/9580339/1621430
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。