4

私のアプレットでは、さまざまな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をバッファで正しく再描画するにはどうすればよいですか?

4

1 に答える 1

0

すでに解決策が見つかりました:

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

于 2012-09-23T14:24:14.490 に答える