我有一个从png文件创建的BufferedImage。创建它时,我将该类型设置为TYPE_INT_ARGB,它应该给我一个透明的图像。当我在JPanel内部使用paintComponent来绘制图像时,我得到一个黑色背景的图像。我真的需要透明,所以任何帮助都会有用。下面是清晰的代码:透明BufferedImage在JLabel上绘制时显示黑色背景
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是另一个小组中,如果有任何意义。
新的IO API取得了诀窍,尽管如果我们认为我使用的方法被认为是旧的,那么很高兴看到旧方法的解决方案,谢谢:)。 – gmunk 2010-12-06 18:31:16