Java Swing:擦除图像的一部分,在下面显示另一个图像

时间:2016-08-15 15:26:03

标签: java image swing

我有JPanel有两张图片(一张在另一张下面)。目标是让用户能够使用鼠标"刮掉"顶部图像,从而暴露底部图像的那一部分。

除了Java Swing而不是Python之外,它是Erase part of image on Tkinter canvas, exposing another image underneath

这可能吗?我知道你可以使用BufferedImage.getSubimage,但据我所知,这只能裁剪图像。

1 个答案:

答案 0 :(得分:3)

假设您的Image支持alpha透明度,那么您只需将Image读入BufferedImage,然后使用BufferedImage的setRGB(...)方法清除图像:

BufferedImage image =  ImageIO.read( new File( ... );
int transparent = new Color(0, 0, 0, 0).getRGB();
image.setRGB(??, ??, transparent);

因此,您需要使用MouseListener来处理MouseEvent以获取您想要透明的像素的位置。