Java 删除在另一个BuffereImage上绘制的BuffereImage

Java 删除在另一个BuffereImage上绘制的BuffereImage,java,swing,bufferedimage,graphics2d,Java,Swing,Bufferedimage,Graphics2d,我有一个名为originalImage的BufferedImage在JPanel上绘制。我有一个名为layer的buffereImage数组,我在originalImage 因此,我如何(例如)完全从原始图像中删除层[0]?简单回答:你不能!只需删除一个图层条目,然后将所有内容都绘制为新的。它的成本很低,所以不用担心。您需要保存绘制缓冲区图像的位置(例如层[0])。然后你就可以把它涂得太多了: public void overpaintImage (BuffereImage originalIm

我有一个名为
originalImage
BufferedImage
JPanel
上绘制。我有一个名为
layer
buffereImage
数组,我在
originalImage


因此,我如何(例如)完全从
原始图像中删除
层[0]

简单回答:你不能!只需删除一个图层条目,然后将所有内容都绘制为新的。它的成本很低,所以不用担心。

您需要保存绘制
缓冲区图像的位置(例如
层[0]
)。然后你就可以把它涂得太多了:

public void overpaintImage (BuffereImage originalImage, Point imagePos, Dimension imageSize)
{
    Rectangle r = new Rectangle(imagePos.x, imagePos.y, imageSize.width, imageSize.height);
    Graphics2D g = originalImage.createGraphics();
    g.setColor(Color.WHITE); // or whatever your background color is
    g.fill(r);
}

问题是,如果我用透明矩形填充层,白色矩形可能会破坏另一层:(@eyadkht),那么您需要清除整个
BufferedImage
,并在其上再次绘制层数组的其余部分