質問

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

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

これを行う方法について何かアイデアはありますか?

ありがとう !

役に立ちましたか?

解決

g.clearRect(..) 選択した長方形にの背景色を埋めます Graphics2D 物体。あなたはやったほうがいいです g.fillRect(..) これはあなたのコードで意図した結果を与えたり、の背景色を設定したりします Graphics2D 事前にオブジェクト(g.setBackground(..)).

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

他のヒント

私は以前にこの問題を抱えていたので、本当に狭いトリックでそれを解決しました。これが取引です:

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

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

画面をクリアしたい場所

g2D.drawImage(image, null, /*your Image observer*/);                    
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top