gpt4 book ai didi

java - 重新绘制一个 argb BufferedImage

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:33 26 4
gpt4 key购买 nike

在我的小程序中,我使用了不同的 BufferedImage 并将它们用作屏幕部件。每个屏幕部分只会在内容需要更改时重新绘制。

这是抽象的 ScreenPart 类:

public abstract class ScreenPart extends BufferedImage{
Graphics2D g;

private BufferedImage buffer = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);

public ScreenPart(int width, int height) {
super(width, height, BufferedImage.TYPE_INT_ARGB);
g = createGraphics();
repaint();
}

public abstract void paint(Graphics2D g);

public void repaint(){
g.drawImage(buffer, 0, 0, null);
paint(g);
}
}

但是缓冲区不起作用,因为缓冲区也是透明的。当我将缓冲区的 BufferedImage 类型从 ARGB 更改为 RGB 时它会起作用,但这也会显示黑色背景。所以我的问题是:如何使用缓冲区正确重绘此 BufferedImage

最佳答案

已经找到解决方案:

public void repaint() {
g.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR));
g.fillRect(0,0, getWidth(), getHeight());
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
paint(g);
}

这没有使用另一个 BufferedImage

关于java - 重新绘制一个 argb BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com