三角形のポインターを使用して角丸長方形の透明な角を実現するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-07 22:11:02
オリジナル
772 人が閲覧しました

How to Achieve Transparent Corners in a Rounded Rectangle with a Triangular Pointer?

角が丸い境界線の透明な角

指定されたコードでは、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート