我知道我不是第一个提出这类问题的人,但我认为地雷有点不同。
我有一个png图像,我画了一个播放器的MS画,我希望当我使用图形对象绘制图像时,图像的背景是透明的。我尝试了一些神奇的粉红色的东西,但它似乎在java中不一样。我不是java新手,但我没有经验,所以你能解释一下你使用的任何软件包或方法,谢谢!
答案 0 :(得分:1)
AlphaComposite
来获得透明效果:Graphics2D
而Graphics
使用BufferedImage
创建临时图形对象g.create()
,然后配置对象以安全地恢复对象创建后更改的图形对象的状态。
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setComposite(AlphaComposite.SrcOver.derive(0.5f));
g2d.drawImage(tileImage, 0, 0, getWidth(), getHeight());
g2d.dispose();
// draw player image
}
答案 1 :(得分:0)
使用Java6时,应该为TrayIcon使用PNG图片,但正如本问题所述,请检查:
the background color chosen to represent the transparent pixels
the transparency options
the resolution of the icon
alternate format like SVG (provided you are using external library like Batik, and
conversion mechnism to java.awt.Image)