From d750fc90db76b0c6aab2f99b987b7af84b831ce4 Mon Sep 17 00:00:00 2001
From: cloudflight <cloudflight@126.com>
Date: 星期二, 07 五月 2024 22:09:59 +0800
Subject: [PATCH] 2024年5月7日

---
 Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs |  239 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 203 insertions(+), 36 deletions(-)

diff --git a/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs b/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs
index 242304c..22502b0 100644
--- a/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs
+++ b/Hydraulic/Hydro.MapUI/Map/MapViewer.Model.cs
@@ -21,6 +21,7 @@
 using System.Threading.Tasks;
 using System.Windows.Forms;
 using System.Windows.Forms.DataVisualization.Charting;
+using static Hydro.MapView.MapViewEnum;
 using static System.Net.Mime.MediaTypeNames;
 using static System.Windows.Forms.AxHost;
 using static System.Windows.Forms.LinkLabel;
@@ -34,23 +35,115 @@
     {
 
     }
+    public class TContainer
+    {
+
+        public MapDimensions mapOption = new MapDimensions();
+
+        public Template newTemplate  = null;
+
+        public Template template = null;
+
+    }
     public partial class MapViewer
     {
 
-        #region 鏂板绠$綉
+        #region 鏍稿績灞炴��
+        TContainer TC = new TContainer();
+
+
+        /// <summary>
+        /// 鍦板浘閫夐」
+        /// </summary>
+        public MapDimensions mapOption 
+        {
+            get { return TC.mapOption; }
+            set { TC.mapOption = value; }
+        }
+        /// <summary>
+        /// 鍦板浘閫夐」_璧峰鎿嶄綔鏃�
+        /// </summary>
+        private MapDimensions mapOption0 = new MapDimensions();
+        /// <summary>
+        /// 涓存椂绠$綉灞�
+        /// </summary>
         [Browsable(false)]
-        public Template _newTemplate { get; set; } = new Template();
+        public Template _newTemplate
+        {
+            get { return TC.newTemplate; }
+            set { TC.newTemplate = value; }
+        }
+
+
+        [Browsable(false)]
+        public Template _Template
+        {
+            get {return TC.template; }
+            set
+            {
+                TC.template = value;
+
+                label_file.Text = TC.template?.filePath;
+            }
+        }
+
+        #endregion
+        #region 浜や簰灞炴��
+        /// <summary>
+        /// 鎮仠瀵硅薄
+        /// </summary>
+        private List<IBaseViewModel> hoveredObjs = new List<IBaseViewModel>();
+        /// <summary>
+        /// 閫変腑瀵硅薄
+        /// </summary>
+        public List<IBaseViewModel> selectedObjs = new List<IBaseViewModel>();
+
+
+        private List<NodeViewModel> selectedNodes => selectedObjs.FindAll(o => o is NodeViewModel).Select(o => (NodeViewModel)o).ToList();
+        private List<LinkViewModel> selectedLinks => selectedObjs.FindAll(o => o is LinkViewModel).Select(o => (LinkViewModel)o).ToList();
+
+        MouseState _mouseState = MouseState.鏃�;
+        private NodeViewModel _OperaNode = null;
+        public PointF mouseXY = new PointF(0, 0);
+
+        PointF DragStartPos;
+        PointF _ClickStartPos;
+        PointF RotaStartPos;
+        PointF BackGroudPicLeftPos;
+        bool _isPanning;
+        /// <summary>
+        /// 鎷栨嫿閫夋嫨
+        /// </summary>
+        bool _isDragging;
+        bool _isRotating;
+        bool _isPainting;
+        
+
+        PointF mousePosition;
+        // control+榧犳爣涓棿鎸変笅缂╂斁
+        bool _isInsertingObject = false;
+        bool _isMovingObject = false;
+        bool _isPastingObject = false;
+        Cursor _lastCursor;
+        object _undoOldValue = null;
+        private List<PointF> polygonPoints = new List<PointF>();
+
+        private bool _isDrawingPolygon;
+
+        #endregion
+        #region 鏂板绠$綉锛堣緟鍔╋級
+
         MapViewNetWork _NewNet
         {
             get
             {
+                if (_newTemplate==null) _newTemplate = new Template();
                 if (_newTemplate.network == null) _newTemplate.network = new MapViewNetWork(); 
                 return _newTemplate.network;
             }
         }
         #endregion
-
-        #region 灞炴��
+        #region 鏄剧ず閫夐」锛堣緟鍔╋級
 
 
         private string _StartPoint = null;
@@ -67,18 +160,7 @@
             }
         }
 
-        private Template __template = null;
-        [Browsable (false)]
-        public Template _Template
-        {
-            get { return __template; }
-            set
-            {
-                __template = value;
-            
-                label_file.Text = __template==null?"": __template.filePath;
-            }
-        }
+   
         [Browsable(false)]
         public float Link_multiply
         {
@@ -156,7 +238,8 @@
                 return _Template?.network;
             }
         }
-
+        #endregion
+        #region 绠$綉灞炴�э紙杈呭姪锛�
         [Browsable(false)]
         public List<NodeCalcModel> _Nodes
         {
@@ -178,27 +261,72 @@
 
         }
         #endregion
+        #region 瑙嗚璁剧疆锛堣緟鍔╋級
 
-
-        #region 鍩虹鍦板浘瑙嗗浘閫夐」
-
-        MapDimensions mapOption = new MapDimensions();
-        MapDimensions mapOption0 = new MapDimensions();
+        
 
         private const float MinZoom = 0.1f;
         private const float MaxZoom = 1000.0f;
 
         [DisplayName("缂╂斁绯绘暟")]
-        public float zoom { get { return mapOption.zoom; }set { mapOption.zoom = value; } }
+        public float zoom 
+        { 
+            get
+            { 
+                return mapOption.zoom;
+            }
+            set
+            {
+                label_zoom.Text = $"Zoom锛歿zoom.ToString("0.000")}";
+                mapOption.zoom = value; 
+            } 
+        }
         [DisplayName("鏃嬭浆瑙掑害")]
-        public double Rotation { get { return mapOption.rotation; } set { mapOption.rotation = value; } }
+        public double Rotation 
+        {
+            get
+            {
+                return mapOption.rotation; 
+            } 
+            set 
+            {
+                toolStripStatusLabel_rotation.Text = $"Rotation锛�({Rotation.ToString("0")}锛寋RotationF.ToString("0")})";
+                mapOption.rotation = value; 
+            } 
+        }
         
         private double Rotation0 = 0;
         [Browsable(false)]
-        public PointF MapCenter { get { return mapOption.Center; } set { mapOption.Center = value; } }
+        public PointF MapCenter 
+        { 
+            get 
+            { 
+                return mapOption.Center; 
+            } 
+            set 
+            {
+                label_center.Text = $"center锛�({MapCenter.X.ToString("0.00")} 锛寋MapCenter.Y.ToString("0.00")}锛�";
+                mapOption.Center = value; 
+            } 
+        }
         private PointF MapCenter0;
         private bool is3Dview = false;
         double 淇瑙掑害_start = 90;
+
+
+
+        public bool Lock2DView
+        {
+            get
+            {
+                return mapOption.Lock2DView;
+            }
+            set
+            {
+                mapOption.Lock2DView = value;
+            }
+        }
+
 
         /// <summary>
         /// 淇绾夸笌搴曢潰鐨勫す瑙掞紝鎶曞奖鐢╯in
@@ -206,18 +334,13 @@
         [DisplayName("淇瑙掑害")]
         public double RotationF 
         { 
-            get {
-                if (Lock2DView) 
-                    mapOption.rotationF = 90;
-                
+            get 
+            {
                 return mapOption.rotationF; 
             } 
-            set { 
-                
-                if (Lock2DView) 
-                    mapOption.rotationF = 90;
-                else
-                    mapOption.rotationF = value;
+            set 
+            { 
+                mapOption.rotationF = value;
             } 
         }
         [Browsable(false)]
@@ -244,7 +367,51 @@
             return new PointF(0, 0);
         }
         #endregion
+        #region 棰滆壊鍒嗙骇锛堣緟鍔╋級
+        Colour _NodeColour
+        {
+            get
+            {
+                return _Template?.Colours?.FirstOrDefault(cl => cl.isChoosed && cl.Type == mapOption.ColourNode);
+            }
+        }
+        Colour _LinkColour
+        {
+            get
+            {
+                return _Template?.Colours?.FirstOrDefault(cl => cl.isChoosed && cl.Type == mapOption.ColourLink);
+            }
+        }
+        
+        //private bool __isOrtho = true;
 
-
+        #endregion
+        #region 姝d氦妯″紡
+        private bool _isOrtho
+        {
+            get
+            {
+                return mapOption.IsOrtho;
+            }
+            set
+            {
+                mapOption.IsOrtho = value;
+                if (mapOption.IsOrtho)
+                {
+                    label_ZZ.Text = "姝d氦妯″紡:寮�";
+                }
+                else
+                {
+                    label_ZZ.Text = "姝d氦妯″紡:鍏�";
+                }
+            }
+        }
+        #endregion
+        #region 浜嬩欢
+        //鎸夊抚鏁板垽鏂槸鍚﹂噸缁橈紝鍑忓皯璁$畻閲忥紙姣忓抚鏈�澶氶噸缁樹竴娆★級
+        bool _timerDraw = false;
+        //鎸夊抚鏁板垽鏂紶鏍囨偓鍋滃璞★紝鍑忓皯璁$畻閲忥紙姣忓抚鏈�澶氬垽鏂竴娆★級
+        bool _mouseHoverCheckFlag = false;
+        #endregion
     }
 }

--
Gitblit v1.9.3