我让动画在我的《蛇克隆游戏》中发挥作用。但基于图片的问题是图像没有透明度(注意圆形图片的白色背景。编程方面,是否有解决方案能够使这些绘制的图像包含透明度?
这是一张包含我的代码和程序输出的图片。
附:顺便说一句,我决定粘贴直接链接而不是 IMG 代码,因为我似乎无法让它显示在 StackOverFlow 上。我在 IMG 代码前面加了一个感叹号,但它不起作用,所以这里是直接链接。
正如另一个答案提到的,最简单的方法可能是简单地使用具有透明背景的 PNG 图像(您可以使用 GIMP 等图像编辑器创建这些图像)。或者,如果您仅限于具有纯色背景的 PNG 图像,下面是如何将 PNG 中的给定颜色(例如白色)更改为透明的示例:
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
public class SimpleFrame extends JFrame {
JPanel mainPanel = new JPanel() {
ImageIcon originalIcon = new ImageIcon("~/Pictures/apple.png");
ImageFilter filter = new RGBImageFilter() {
int transparentColor = Color.white.getRGB() | 0xFF000000;
public final int filterRGB(int x, int y, int rgb) {
if ((rgb | 0xFF000000) == transparentColor) {
return 0x00FFFFFF & rgb;
} else {
return rgb;
}
}
};
ImageProducer filteredImgProd = new FilteredImageSource(originalIcon.getImage().getSource(), filter);
Image transparentImg = Toolkit.getDefaultToolkit().createImage(filteredImgProd);
public void paintComponent(Graphics g) {
g.setColor(getBackground());
g.fillRect(0, 0, getSize().width, getSize().height);
// draw the original icon
g.drawImage(originalIcon.getImage(), 100, 10, this);
// draw the transparent icon
g.drawImage(transparentImg, 140, 10, this);
}
};
public SimpleFrame() {
super("Transparency Example");
JPanel content = (JPanel)getContentPane();
mainPanel.setBackground(Color.black);
content.add("Center", mainPanel);
}
public static void main(String[] argv) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SimpleFrame c = new SimpleFrame();
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setSize(280,100);
c.setVisible(true);
}
});
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)