1

を使用してある画像を別の画像に描画しようとしてgraphics.drawImage()いますが、一部の画像でのみ正確に機能し、他の画像では混乱します。以下の私のコードtextureは、メソッドに入るときに正しい画像であることを確認したので、間違いなくそうではありません。何か案は?

private BufferedImage currentSheet;
public void swapRegionWithTexture(Rectangle region, Image texture) {
    Graphics sheetGraphics = currentSheet.createGraphics();
    for (int ix = region.x; ix < region.x + region.width; ix++) {
        for (int iy = region.y; iy < region.y + region.height; iy++) {
            currentSheet.setRGB(ix, iy, 0x000000);
        }
    }
    sheetGraphics.drawImage(texture, region.x, region.y, null);
    sheetGraphics.dispose();
}

一般的な考え方は次のとおりです。

  1. 描画するグラフィックを取得します。
  2. 描画されるグラフィックのセクションをクリアします。
  3. グラフィックの指定された場所に画像を描画します。
  4. グラフィックを破棄します。
4

1 に答える 1

0

したがって、現在のアトミックステップは次のとおりです。

  • 新しいバッファリングされた画像を作成します
  • そのバッファリングされた画像に、元のテクスチャのクレイジーな操作を書き込みます(元に戻しているように見えますか?)
  • 元の画像を現在のシートに書き込みます。

では、これを変更するとどうなりますか

sheetGraphics.drawImage(texture, region.x, region.y, null);

これに

sheetGraphics.drawImage(bufferedTexture, region.x, region.y, null);

そうしないと、画像を反転してバッファリングされたテクスチャに入れてから、そのバッファで何もしないことに時間を費やしていることになります。そのため、バッファリングされたテクスチャをどこかで使用することを意図している可能性があります。

于 2012-07-19T19:32:18.570 に答える