[英]Repaint an argb BufferedImage
在我的applet中,我使用不同的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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.