圓角邊框中的透明角
在給定的程式碼中,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中文網其他相關文章!