【发布时间】:2013-09-15 15:08:57
【问题描述】:
我有一个透明的 PNG 图像。我使用该格式是因为只有 PNG 可以支持透明度和 alpha 蒙版。
我的目标是用这个图像绘制一个JPanel,让透明区域具有底层面板的颜色,并最终用图像做一些动画。
无论我遇到什么问题,当在 JPanel 上加载和绘制时,透明区域变成纯白色。
所以java不支持透明图片?
class imgpanel extends JPanel{
BufferedImage image,backg;
imgpanel(){
try {
image = ImageIO.read(new File("theimage.png"));
backg = ImageIO.read(new File("backimage.png"));
} catch (IOException ex) {
System.out.println("No image found");
}
setPreferredSize(new Dimension(400,300));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(backg,0,0,null);
g.drawImage(image, 0, 0, null);
}
}
因此我将透明的“theimage”绘制到不透明的“backimage”上
【问题讨论】:
-
能分享一下代码吗,你是用什么方法添加图片的?在某些库中,您可以添加图片并给出透明度。
-
是的,它确实支持透明度。要获得更完整的答案,您需要显示一些代码(例如,您如何绘制)。
-
对于example。
-
@kiheru 添加了代码 sn-p
-
啊,和前两天一样的代码。它实际上正常工作。请检查您正在使用的图像。我已经看到使用某些 java 版本加载带有索引颜色的 PNG 的破坏行为。这不一定是问题,但我会通过使用 RGBA 中的两个图像开始寻找,两者都具有一定的半透明性。
标签: java image swing jpanel transparency