問題ステートメント:
クエリは TextBubbleBorder を中心に展開します。テキスト領域用にデザインされたカスタム境界線。ただし、境界線を使用して角丸四角形を作成すると (ポインター サイズを 0 に設定して)、四角形の外側の角は不透明なままとなり、必要な透明度ではなくデフォルトのパネル カラーが表示されます。
ソリューションの概要:
境界線の角を透明にする鍵は、角丸四角形の外側の領域に親コンポーネントの背景色をペイントすることにあります。これには以下が含まれます:
修正コード:
TextBubbleBorder クラス内の次の変更されたPaintBorder メソッドには、上記の手順が組み込まれています:
@Override public void paintBorder( Component c, Graphics g, int x, int y, int width, int height) { Graphics2D g2 = (Graphics2D) g; // ... (unchanged code) // 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); } // ... (unchanged code) }
結果:
この変更により、親の背景が効果的に外側の領域に描画されます。角を丸くして、目的の透明な境界線を作成します。親コンポーネントとシームレスに統合される、透明な境界線を持つ角丸長方形を作成できるようになりました。
以上が角丸長方形の枠線の透明な角を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。