角が丸い境界線の透明な角
指定されたコードでは、TextBubbleBorder クラスは、下部に三角形のポインターを持つ角丸四角形を描画します。 。ただし、長方形の外側の角は少し伸びており、親パネルの背景色が表示されます。透明なコーナーを実現するには、paintBorder メソッドを変更して追加のステップを含めます。
// Paint the BG color of the parent, everywhere outside the clip // of the text bubble. Component parent = c.getParent(); if (parent!=null) { Color bg = parent.getBackground(); Rectangle rect = new Rectangle(0,0,width, height); Area borderRegion = new Area(rect); borderRegion.subtract(area); g2.setClip(borderRegion); g2.setColor(bg); g2.fillRect(0, 0, width, height); g2.setClip(null); }
このコードは、コンポーネントに親があるかどうかを確認し、その背景色を取得し、境界領域全体を表す四角形を作成します。次に、この四角形を表す Area オブジェクト borderRegion を作成します。次に、borderRegion からテキスト バブルを表す領域を減算し、テキスト バブルの外側の領域を表す Clip と呼ばれる領域を作成します。
clip を使用すると、コードは Graphics2D オブジェクトのクリッピング領域を設定し、それを塗りつぶします。親の背景色を使用して、クリッピング領域をリセットして境界線自体を描画します。これにより、角丸長方形の外側の角が透明になり、親の背景色が表示されます。
以上が三角形のポインターを使用して角丸長方形の透明な角を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。