2010-12-30 21 views
2

私はARGB BufferedImageを作成しました。今私は透明な背景でそれを再初期化したいと思います。私は次のコードを試しました:Graphics2Dを使用して透明で塗りつぶし

(...) 
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); 
(...) 

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

どうすればいいですか?

ありがとうございます!

+0

didnの」画面をクリアするように注意してください塗料のコンストラクタで

どのように働く?例外を投げた?青いイメージを作成しましたか?ヌル画像を作成しましたか? – Will

+0

私の画面は白い背景に黒です。 – Pierre

答えて

2

g.clearRect(..)は、Graphics2Dオブジェクトの背景色で選択した矩形を塗りつぶします。 g.fillRect(..)を実行して、コードで意図した結果が得られるようにするか、あらかじめGraphics2Dオブジェクトの背景色を設定する方がよいでしょう(g.setBackground(..))。

また、フィルの前にg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));を実行する必要があるため、バッファを適切に設定します(宛先バッファのデータは無視し、ソースデータのみを使用します)。この値のデフォルト値は不明ですが、正常に動作するように設定し直す必要があります。

+0

ありがとう! setBackgroundが解決策でした。 – Pierre

-1

私は以前にこの問題を抱えていましたが、私はそれを本当に狭いやり方で解決しました。ここ は契約です:クラスは、システムのスクリーンショットを取るが、

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

、どこが

g2D.drawImage(image, null, /*your Image observer*/);      
関連する問題