我想创建一个带有圆角的自定义边框。

代码- 通用标签

结果-

“在此处输入图片描述”

如您所见,Graphics.drawRect完全忽略了BasicStroke.CAP_ROUNDBasicStroke.JOIN_ROUND属性。为什么?

有帮助吗?

解决方案

学习Java 2D,第1部分

java.awt.BasicStroke.CAP_ROUND:这使圆帽以端点为中心,直径为笔宽。

关键字是“居中”。我相信,在使用粗笔画进行绘制时,Java2D总是会在假设像素的起点和终点坐标之间的无穷细线处将线的粗线居中。例如,当绘制一条7像素粗的垂直蓝线时,Java2D在所绘制的假设线段的每一侧都绘制3像素。

在您的示例中,厚度为5像素。您需要偏移坐标才能在图形剪辑中完全绘制笔划。通过移动2个像素(或THICKNESS/2),可以看到圆角:

“移动2个像素后的GUI屏幕截图” 通用标签

其他提示

问题是偏移量:您有效地切除了中间的边框,因此拐角处似乎没有圆角。考虑到这一点(此处仅针对偏移量,还需要调整宽度) 通用标签

修改

固定的草率像素计数:-)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top