From 13d032241e1a2938a8be4f64c9171e1240e9ea1e Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期一, 22 十二月 2025 18:50:42 +0800
Subject: [PATCH] 新增了边界管理页面和首页边界虚线功能

---
 src/zhuye/LegendDialog.java |   65 +++++++++++++++++++++++++++++---
 1 files changed, 59 insertions(+), 6 deletions(-)

diff --git a/src/zhuye/LegendDialog.java b/src/zhuye/LegendDialog.java
index d595034..f3c852f 100644
--- a/src/zhuye/LegendDialog.java
+++ b/src/zhuye/LegendDialog.java
@@ -48,6 +48,7 @@
             {"璺緞鏂瑰悜", "255,0,0", "arrow"},
             {"闅滅鐗╁尯鍩�", "255,0,0", "obstacle_fill"},
             {"鍓茶崏鏈轰綅缃�", "0,150,0", "mow"},
+            {"寰�杩旇矾寰�", "0,0,0", "railway"},
             {"鍓茶崏杞ㄨ抗", "100,150,200", "trail"}
         };
         
@@ -61,7 +62,7 @@
             contentPanel.remove(contentPanel.getComponentCount() - 1);
         }
         
-        // 鐩存帴娣诲姞鍐呭闈㈡澘锛屼笉浣跨敤婊氬姩鏉�
+        // 娣诲姞鍥句緥鍐呭闈㈡澘
         mainPanel.add(contentPanel, BorderLayout.CENTER);
         
         getContentPane().add(mainPanel);
@@ -120,11 +121,30 @@
                         g2d.fillPolygon(xPoints, yPoints, 3);
                         break;
                     case "mow":
-                        g2d.setColor(itemColor);
-                        g2d.fillOval(x, y, size, size);
-                        g2d.setColor(new Color(100, 100, 100));
-                        g2d.setStroke(new BasicStroke(1));
-                        g2d.drawOval(x, y, size, size);
+                        ImageIcon icon = loadIcon("image/gecaoji.png", size + 8, size + 8);
+                        if (icon != null) {
+                            icon.paintIcon(this, g2d, x - 4, y - 4);
+                        } else {
+                            g2d.setColor(itemColor);
+                            g2d.fillOval(x, y, size, size);
+                            g2d.setColor(new Color(100, 100, 100));
+                            g2d.setStroke(new BasicStroke(1));
+                            g2d.drawOval(x, y, size, size);
+                        }
+                        break;
+                    case "railway":
+                        // 1. 缁樺埗搴曞眰榛戣壊瀹炵嚎
+                        g2d.setColor(Color.BLACK);
+                        g2d.setStroke(new BasicStroke(3.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+                        g2d.drawLine(x, y + size/2, x + size, y + size/2);
+                        
+                        // 2. 缁樺埗椤跺眰鐧借壊铏氱嚎
+                        float dashLen = 3.0f * 2.0f;
+                        float dashSpace = 3.0f * 2.0f;
+                        float[] dashPattern = {dashLen, dashSpace};
+                        g2d.setColor(Color.WHITE);
+                        g2d.setStroke(new BasicStroke(1.2f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 10.0f, dashPattern, 0.0f));
+                        g2d.drawLine(x, y + size/2, x + size, y + size/2);
                         break;
                     case "trail":
                         g2d.setColor(itemColor);
@@ -154,4 +174,37 @@
         
         return itemPanel;
     }
+    
+    /**
+     * 鍔犺浇骞剁缉鏀惧浘鏍�
+     * @param iconPath 鍥炬爣璺緞
+     * @param width 鐩爣瀹藉害
+     * @param height 鐩爣楂樺害
+     * @return 缂╂斁鍚庣殑鍥炬爣
+     */
+    private ImageIcon loadIcon(String iconPath, int width, int height) {
+        try {
+            java.net.URL imgURL = getClass().getClassLoader().getResource(iconPath);
+            if (imgURL == null) {
+                // 灏濊瘯浠庢枃浠剁郴缁熷姞杞�
+                java.io.File imgFile = new java.io.File(iconPath);
+                if (imgFile.exists()) {
+                    ImageIcon originalIcon = new ImageIcon(imgFile.getAbsolutePath());
+                    Image scaledImage = originalIcon.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH);
+                    ImageIcon scaledIcon = new ImageIcon(scaledImage);
+                    scaledIcon.setDescription(iconPath);
+                    return scaledIcon;
+                }
+            } else {
+                ImageIcon originalIcon = new ImageIcon(imgURL);
+                Image scaledImage = originalIcon.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH);
+                ImageIcon scaledIcon = new ImageIcon(scaledImage);
+                scaledIcon.setDescription(iconPath);
+                return scaledIcon;
+            }
+        } catch (Exception e) {
+            System.err.println("鏃犳硶鍔犺浇鍥炬爣: " + iconPath + " - " + e.getMessage());
+        }
+        return null;
+    }
 }
\ No newline at end of file

--
Gitblit v1.10.0