3

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が別のパネル内にあるということです(それが重要な場合)。

4

3 に答える 3

3

これで問題が解決するかどうかはわかりませんが、次のようになります。

于 2010-12-06T18:24:46.507 に答える
2

古いバージョンのJavaの使用に制限されていますか?ImageIO.read(fileName)を使用して画像ファイルをロードしてみてください。

于 2010-12-06T18:30:45.993 に答える
0

これを試してください(つまり、setComposite()):

g2d.setComposite(AlphaComposite.SrcOver); g2d.setPaint(背景色); g2d.fillRect(0, 0, w, h);

于 2012-04-19T13:36:51.733 に答える