Graphics2dを使用した透明性で埋める
-
14-10-2019 - |
質問
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*/);
所属していません StackOverflow