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);
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章