Как нарисовать прозрачное изображение в Java с BufferedImage? - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу показать прозрачное изображение на холсте в java с помощью graphics2D и BufferedImage.

Вот код, который загружает изображение.

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();
    }

У меня много поисков в сети, но я не нашел решения. Если кто-нибудь знает, как это исправить.

Вот изображение ..

А вот как выглядит вывод

enter image description here

1 Ответ

0 голосов
/ 01 ноября 2018

Хорошо, кто бы ни сталкивался с подобными проблемами:

  1. Убедитесь, что изображение прозрачное. Проверьте это в программе просмотра изображений.

  2. Удалить строку g2d.setComposite(AlphaComposite.Src); Эта строка добавляет альфа-композиты, которые делают каждый прозрачный пиксель черным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...