2012-05-23 47 views
4

我在Swing中顯示圖像。我正在繪製圖像(一串drawRect()調用)並刷新屏幕。圖像是恆定的,但頂部繪製的對象不是。有什麼辦法可以避免重新繪製圖像嗎?由於顯卡可能會顯示圖像,因此可以認爲drawRect()通話是瓶頸嗎?我畫了多達20,000個呼叫幀(但通常不超過3000)。擺動圖像顯示優化

編輯:它確實是減慢它的正切調用,並且通過移除透明度通道可以大大提高速度。話雖如此,但加速幷包含透明度仍然不錯。代碼不能變得更簡單,所以我希望通過做一些不同的事情會有所幫助。

public void paintComponent(Graphics g) { 
    super.paintComponent(g) ; 
    //grid or walkers 
    g.drawImage(image, 0, 0, null); 

    for(Walker w : walkArray){ 
     g.setColor(new Color(255,255-w.data[3], 0, w.data[2])); 
     g.drawRect(w.data[0], w.data[1], 1, 1); 
    }  
} 
+0

你可以發佈你的繪畫方法嗎? –

+3

發佈一些代碼,甚至更好,發佈[SSCCE](http://sscce.org)。 –

+0

圖像是否顯示在BufferedImage中?如果沒有代碼,我們會在這裏受到束縛。 –

回答

2

這是斷章取義的,但你可以查找顏色的調色板預計算而不是在每個週期創建Color的實例?也許這可能會提高性能。

編輯:例如,List<Integer>用作RGB查找表hereQueue<Color>用於here

+1

+1 @Chet:值得一試;配置文件是肯定的。 – trashgod