レイヤーをサポートするペイント ツールを実装しようとしています。レイヤーごとに WritableRaster を作成します。キャンバスを表示するには、レイヤーを結合する必要があります。これを行う最も効率的な方法は何ですか? bufferedImage を使用し、ラスターを設定して、アルファ合成を使用して各レイヤーを Graphics コンテキストに描画できます。しかし、データレベルでマージしてから単一の画像を描画する方が良い/高速ではありませんか?
編集:プロファイリングを行いました。これは私の現在のアプローチがどのように見えるかです:
//tmp.getRaster().setRect(layer.getRaster()); // VERY slow
tmp.getRaster().setDataElements(0, 0, layer.getRaster()); //slow
g2.drawImage(tmp, 0, 0, scaledDim.width, scaledDim.height, null);
以前は各レイヤーに WritableRasters の代わりに BufferedImages を使用していましたが、目立った遅延はありませんでした。
私の次のステップは、上部と下部のレイヤーをキャッシュすることです。そのため、描画される画像は 3 つだけになります。それはおそらく問題を解決するでしょう。