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 回答