簡體   English   中英

重繪一個argb BufferedImage

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM