2

ARGB BufferedImage を作成しました。今、透明な背景で再初期化したいと思います。次のコードを試しました:

(...) 
if( this.offscreen==null  ||
    this.offscreen.getWidth()!= dim.width ||
    this.offscreen.getHeight()!= dim.height )
    {
    this.offscreen=new BufferedImage(
       dim.width,
       dim.height,
      BufferedImage.TYPE_INT_ARGB);
     }
Graphics2D g=this.offscreen.createGraphics();
g.setColor(new Color(255,255,255,0));
g.clearRect(0, 0, dim.width, dim.height);
(...)

しかし、うまくいきませんでした。

これを行う方法について何か考えはありますか?

ありがとう !

4

2 に答える 2

2

g.clearRect(..)選択した長方形をオブジェクトの背景色で塗りつぶしGraphics2Dます。g.fillRect(..)コードで意図した結果が得られるようにするか、オブジェクトの背景色をGraphics2D事前に設定することをお勧めします ( ) g.setBackground(..)

また、バッファを適切に設定するために、フィルの前に行う必要がある場合がありg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));ます (宛先バッファ データを無視し、ソース データのみを使用します。この場合、フィル操作)。この値のデフォルトが何であるかはわかりませんが、適切な操作を確保するために、後で元の値に戻す必要があります。

于 2010-12-30T20:23:06.553 に答える
-1

以前にこの問題があり、非常に狭いトリックで解決しました。契約は次のとおりです。

ペイントクラスのコンストラクターで、システムのスクリーンショットを撮りますが、注意してください

BufferedImage image = new Robot().createScreenCapture(new Rectangle(0, 23, xScreen, yScreen));

そして、画面をクリアしたい場所

g2D.drawImage(image, null, /*your Image observer*/);                    
于 2013-05-16T16:41:30.037 に答える