4

で画像を表示していSwingます。画像の上に描画し(一連のdrawRect()呼び出し)、画面を更新しています。イメージは一定ですが、上に描画されるオブジェクトは一定ではありません。いつでも画像を再描画しないようにする方法はありますか? drawRect()グラフィックス カードが画像を表示する可能性が高いため、呼び出しがボトルネックであると想定しても安全ですか? 私は 1 フレームあたり 20,000 もの呼び出しを描画します (ただし、通常は 3000 を超えません)。

編集:実際に速度が低下しているのは rect 呼び出しであり、透明度チャネルを削除することでかなり高速化できます。そうは言っても、それをスピードアップして透明性を含めることはまだ良いでしょう. コードはこれ以上単純になることはないので、別の方法で解決できることを願っています。

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

1 に答える 1

2

これは文脈から外れていますが、Colorすべてのサイクルで のインスタンスを作成する代わりに、事前に計算されたパレットで色を検索できますか? 多分それはパフォーマンスを少し改善することができます。

編集: たとえば、ここでは a がList<Integer>RGB ルックアップ テーブルとして使用され、ここでは aQueue<Color>が使用されます

于 2012-05-23T20:38:51.210 に答える