我有一个从png文件创建的BufferedImage。在创建它时我将类型设置为TYPE_INT_ARGB,这应该给我一个透明的图像。当我在JPanel中使用paintComponent来绘制图像时,我得到的图像为黑色背景。我真的需要让它透明,所以任何帮助都会有用。这是为清晰起见的代码:
public class ImagePanel extends JPanel {
private static final long serialVersionUID = 1L;
private BufferedImage image;
public ImagePanel() {
this.image = null;
}
public void createImage(String fileName) {
this.image = ImageUtilities.getBufferedImage(fileName, this);
this.repaint();
}
public void paint(Graphics g) {
g.drawImage(this.image, 0, 0, this);
}
}
以下是我加载图片的方式:
public class ImageUtilities {
/** Create Image from a file, then turn that into a BufferedImage.
*/
public static BufferedImage getBufferedImage(String imageFile, Component c) {
Image image = c.getToolkit().getImage(imageFile);
waitForImage(image, c);
BufferedImage bufferedImage = new BufferedImage(image.getWidth(c), image.getHeight(c),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bufferedImage.createGraphics();
g2d.drawImage(image, 0, 0, c);
return(bufferedImage);
}
最后要补充的一点是,如果有任何意义,这个ImagePanel会在另一个Panel中。
答案 0 :(得分:3)
不确定这是否能解决您的问题,但是:
答案 1 :(得分:2)
您是否仅限于使用旧版Java?尝试使用ImageIO.read(fileName)加载图像文件。
答案 2 :(得分:0)
试试这个(即setComposite()):
g2d.setComposite(AlphaComposite.SrcOver); g2d.setPaint(的backgroundColor); g2d.fillRect(0,0,w,h);