| | |
| | | |
| | | // 颜色定义 |
| | | private static final Color MANUAL_BOUNDARY_COLOR = new Color(255, 0, 0); // 红色 |
| | | private static final Color MANUAL_BOUNDARY_LINE_COLOR = new Color(0, 100, 0); // 墨绿色 |
| | | private static final Color MANUAL_BOUNDARY_FILL_COLOR = new Color(255, 0, 0, 50); // 半透明红色填充 |
| | | private static final Color MOUSE_POSITION_COLOR = new Color(255, 0, 0, 128); // 半透明红色(鼠标位置) |
| | | |
| | |
| | | // 绘制边界线(至少需要2个点) |
| | | if (points.size() >= 2) { |
| | | g2d.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); |
| | | g2d.setColor(MANUAL_BOUNDARY_COLOR); |
| | | g2d.setColor(MANUAL_BOUNDARY_LINE_COLOR); |
| | | |
| | | Path2D.Double borderPath = new Path2D.Double(); |
| | | borderPath.moveTo(points.get(0).x, points.get(0).y); |
| | |
| | | // 即使只有一个点也要绘制 |
| | | if (points.size() >= 1) { |
| | | // 将线条宽度转换为世界坐标的直径,直径是线条宽度的2倍 |
| | | double pointDiameter = (strokeWidth * 2) / scale; |
| | | double pointDiameter = strokeWidth * 2; |
| | | g2d.setColor(MANUAL_BOUNDARY_COLOR); |
| | | for (Point2D.Double point : points) { |
| | | Ellipse2D.Double marker = new Ellipse2D.Double( |
| | |
| | | // 计算线条宽度 |
| | | float strokeWidth = (float) (3 / Math.max(0.5, scale)); |
| | | // 鼠标位置圆圈直径是线条宽度的2倍 |
| | | double mouseCircleDiameter = (strokeWidth * 2) / scale; |
| | | double mouseCircleDiameter = strokeWidth * 2; |
| | | |
| | | // 绘制鼠标位置的圆圈(使用半透明颜色) |
| | | g2d.setColor(MOUSE_POSITION_COLOR); |
| | |
| | | g2d.setStroke(originalStroke); |
| | | } |
| | | } |
| | | |
| | | |