如何使用 BufferedImage 在 java 中绘制透明图像?

How to draw transparent image in java with BufferedImage?

我愿意在 graphics2D 和 BufferedImage 的帮助下在 java 中的 canvas 上显示透明图像。

这是加载图像的代码。

private static BufferedImage sprites,board;
    public static void load(){
        try {
            board = new BufferedImage(100,100,BufferedImage.TYPE_INT_ARGB);
            board = ImageIO.read(new File("res/chesssprite.png"));
        } catch (IOException ex) {
            Logger.getLogger(SpriteManager.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

这是渲染图像的代码

public void render(){

        BufferStrategy bs = this.getBufferStrategy();

        if(bs == null){
            this.createBufferStrategy(3);
            return;
        }

        Graphics g = bs.getDrawGraphics();
        Graphics2D g2d = (Graphics2D) g;

        {

            g2d.setColor(new Color(150,150,150));
            g2d.fillRect(0,0,getWidth(), getHeight());

            g2d.setComposite(AlphaComposite.Src);
            g2d.drawImage(board,0,0,null);

        }
        g = g2d;
        g.dispose();
        bs.show();
    }

我在网上搜索了很多,但没有给出解决方案。如果有人知道如何解决这个问题。

这是图片..

这是输出的样子

好的,遇到此类问题的人:

  1. 确保图像是透明的。在图像查看器中测试它。

  2. 删除行g2d.setComposite(AlphaComposite.Src);此行添加 alpha 合成,使每个透明像素变黑。