2011-07-21 12 views
0

Graphics2Dにシェイプを描画し、ある範囲と交差する場合はその一部を色づけしたいと思います。私は、AlphaCompositeとAlphaComposite.SRC_INを使用して、2つの図形をBufferedImage(元の図形と色の変更を引き起こす領域)に描画することによってこれを実現しました。問題は、キャンバスをスクロールすると、ペイントメソッドが呼び出されるたびにバッファリングされたイメージが作成されるため、画面が遅くなることです。バッファリングされていないイメージのアルファブレンディング

バッファリングされたイメージオブジェクトを使用せずに同じ効果(2つのシェイプが重なっていて、2番目のシェイプのオーバーラップエリアのみが着色されています)を達成する方法はありますか?

乾杯、 マックス

答えて

1

私はあなたが何をしようとしている、完全に何undertandわからないんだけど、あなたはバッファリングされたイメージにpaintメソッドが呼び出されるたびに作成しないでください。表示するオブジェクト内で何かが変更されたときだけです。

+0

これでもう少し明確にしましょう。表示したい形はグラフです。グラフは青で塗りつぶされています。グラフが一定の値を上回るときはいつでも、それは赤色に着色されるべきです。グラフを最初に描画し、グラフの塗りつぶし領域が赤くなる領域を表す四角形でオーバーレイしたいと思います。ペイントメソッドは、スクロールバーが移動されるたびに呼び出されます。 – Max

+0

あなたのコメントであなたが言ったことがどのようになっているのかわからないので、モーリスの賢明なアドバイスを実装するのを妨げています.. "BufferedImageインスタンスをキャッシュしてください。 –

+0

なぜ、バッファリングされたイメージを作成するのではなく、四角形を描画していませんか? –

関連する問題