首頁 >Java >java教程 >如何用三角形指針實現圓角矩形的透明角?

如何用三角形指針實現圓角矩形的透明角?

Barbara Streisand
Barbara Streisand原創
2024-11-07 22:11:02823瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn