问题陈述:
查询围绕 TextBubbleBorder,一个为文本区域设计的自定义边框。但是,当使用边框创建圆角矩形(通过将指针大小设置为零)时,矩形外部的角保持不透明,显示默认面板颜色而不是所需的透明度。
解决方案概述:
实现边框角点透明的关键在于将父组件的背景色绘制在圆角矩形之外的区域。这涉及:
修改代码:
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中文网其他相关文章!