码迷,mamicode.com
首页 > 编程语言 > 详细

Java 双缓冲技术消除图片闪动

时间:2015-03-17 16:05:00      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:java   canvas   刷新闪烁   闪烁   双缓冲技术   显示   

    一般在使用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

Java 双缓冲技术消除图片闪动

标签:java   canvas   刷新闪烁   闪烁   双缓冲技术   显示   

原文地址:http://flyingfish.blog.51cto.com/9580339/1621430

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!