「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 三角形のポインターを使用して角丸長方形の透明な角を実現するにはどうすればよいですか?

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

2024 年 11 月 12 日に公開
ブラウズ:297

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 オブジェクトのクリッピング領域を設定し、それを塗りつぶします。親の背景色を使用して、クリッピング領域をリセットして境界線自体を描画します。これにより、角丸長方形の外側の角が透明になり、親の背景色が表示されます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3