From 4db7d08bb295be33e80f1353f58fcea4a8da6127 Mon Sep 17 00:00:00 2001
From: cloudflight <cloudflight@126.com>
Date: 星期一, 10 六月 2024 19:11:39 +0800
Subject: [PATCH] 2024年6月10日

---
 Hydraulic/Hydro.MapUI/Map/MapViewer.Draw.cs |  158 +++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 112 insertions(+), 46 deletions(-)

diff --git a/Hydraulic/Hydro.MapUI/Map/MapViewer.Draw.cs b/Hydraulic/Hydro.MapUI/Map/MapViewer.Draw.cs
index 144721b..a8af967 100644
--- a/Hydraulic/Hydro.MapUI/Map/MapViewer.Draw.cs
+++ b/Hydraulic/Hydro.MapUI/Map/MapViewer.Draw.cs
@@ -21,6 +21,110 @@
 
     partial class MapViewer
     {
+        void DrawBackGroud(Graphics bufferG,Template template)
+        {
+            if (template == null) return;
+            var _Nodes = template.network.Nodes.ViewNodes;
+            var _Links = template.network.Links.ViewLinks;
+
+            var Cpoints = getCurclePoints(64).ToList();
+
+            var r = 1.73f / zoom;
+            var rt = r;
+
+            float minElve = float.MinValue;
+            float maxElve = float.MaxValue;
+
+            r = r * Link_multiply;
+            List<PointF> diametersZoom = new List<PointF>() { new PointF(0, 0.08f), new PointF(150, 0.03f), new PointF(300, 0.001f), new PointF(800, 0.0001f) };
+
+            Pen penN = new Pen(Color.FromArgb(0, 0, 255), 1 * r);
+
+ 
+            //鑳屾櫙鍥剧粯鍒�
+            if (this.mapOption.isShowPic && template != null && File.Exists(template.BackGroundImg_FullPath))
+
+
+            {
+                //var gs = bufferG.Save();
+                // 搴旂敤鐭╅樀鍙樻崲浠ユ姷娑堜箣鍓嶇殑缈昏浆鏁堟灉
+                //bufferG.ScaleTransform(1 / Zoom.X, 1 / Zoom.Y);
+                List<PointF> p = new List<PointF>();
+
+                if (!this.mapOption.isAutoBackgroundImage)
+                {
+                    var Cps = new List<PointF>
+                    {
+                        template.BackGroundPoint1,
+                        new PointF(template.BackGroundPoint2.X,template.BackGroundPoint1.Y),
+                        new PointF(template.BackGroundPoint1.X,template.BackGroundPoint2.Y),
+                        //template.BackGroundPoint2,
+
+
+                    };
+                    Cps.ForEach(cp => p.Add(WorldPointToMapPoint(cp, template.BackGroundElev, template.OffSet)));
+                }
+                else
+                {
+
+                    // 鎭㈠涔嬪墠淇濆瓨鐨勭粯鍥剧姸鎬�
+
+                    //var Cps = new List<PointF>
+                    //{
+                    //    template.BackGroundPoint1,
+                    //    new PointF(template.BackGroundPoint2.X,template.BackGroundPoint1.Y),
+                    //    new PointF(template.BackGroundPoint1.X,template.BackGroundPoint2.Y),
+                    //    //template.BackGroundPoint2,
+
+
+                    //};
+                    var p1 = new PointF(template.BackGroundImgX, template.BackGroundImgY);
+                    var p2 = new PointF(template.BackGroundImgX + template.BackGroundImgWidth, template.BackGroundImgY + template.BackGroundImgHeight);
+
+                    var f = template.BackGroundImgRotaAngle / 180 * Math.PI;
+                    var djx = Math.Sqrt((Math.Pow(template.BackGroundImgWidth, 2) + Math.Pow(template.BackGroundImgHeight, 2)));
+                    var p3 = new PointF(p1.X + (float)(Math.Cos(f) * template.BackGroundImgWidth), p1.Y + (float)(Math.Sin(f) * template.BackGroundImgWidth));
+                    var p4 = new PointF(p1.X - (float)(Math.Sin(f) * template.BackGroundImgHeight), p1.Y + (float)(Math.Cos(f) * template.BackGroundImgHeight));
+                    p3.Y = p4.Y;
+                    //p4.Y = -p4.Y;
+                    var Cps = new List<PointF>
+                {
+                    //template.BackGroundPoint1,
+                    //new PointF(template.BackGroundImgX,template.BackGroundImgY),
+                    p4,
+                    p3,p1
+                    //template.BackGroundPoint2,
+                    
+                 
+                };
+                    template.BackGroundPoint1 = p4;
+                    template.BackGroundPoint2 = new PointF(p3.X, p1.Y);
+
+
+
+                    //List<PointF> p = new List<PointF>();
+                    Cps.ForEach(cp => p.Add(WorldPointToMapPoint(cp, template.BackGroundElev, template.OffSet)));
+                }
+
+                //bufferG.DrawImage(System.Drawing.Image.FromFile(@"C:\Users\cloud\Pictures\GenshinImpactCloudGame\QQ鎴浘20230919105637.png"), p[0]);
+                try
+                {
+                    var img = System.Drawing.Image.FromFile(template.BackGroundImg_FullPath);
+                    if (img != null)
+                    {
+                        bufferG.FillPolygon(penN.Brush, p.ToArray());
+                        bufferG.DrawImage(img, p.ToArray());
+                    }
+                }
+                catch
+                {
+
+                }
+
+                //bufferG.Restore(gs);
+            }
+        }
+
         void Draw(Graphics bufferG, Template template)
         {
             if (template == null) return;
@@ -56,51 +160,7 @@
 
             Pen penClosed = new Pen(Color.OrangeRed, 2 * r);
             Pen penHovered = new Pen(Color.DeepSkyBlue, 5 * r);
-            //鑳屾櫙鍥剧粯鍒�
-            if (this.mapOption.isShowPic && template != null && File.Exists(template.BackGroundImg_FullPath))
-
-
-            {
-                //var gs = bufferG.Save();
-                // 搴旂敤鐭╅樀鍙樻崲浠ユ姷娑堜箣鍓嶇殑缈昏浆鏁堟灉
-                //bufferG.ScaleTransform(1 / Zoom.X, 1 / Zoom.Y);
-
-
-
-                // 鎭㈠涔嬪墠淇濆瓨鐨勭粯鍥剧姸鎬�
-
-                var Cps = new List<PointF>
-                {
-                    template.BackGroundPoint1,
-                    new PointF(template.BackGroundPoint2.X,template.BackGroundPoint1.Y),
-                    new PointF(template.BackGroundPoint1.X,template.BackGroundPoint2.Y),
-                    //template.BackGroundPoint2,
-                    
-                 
-                };
-
-
-
-                List<PointF> p = new List<PointF>();
-                Cps.ForEach(cp => p.Add(WorldPointToMapPoint(cp, template.BackGroundElev, template.OffSet)));
-
-                //bufferG.DrawImage(System.Drawing.Image.FromFile(@"C:\Users\cloud\Pictures\GenshinImpactCloudGame\QQ鎴浘20230919105637.png"), p[0]);
-                try
-                {
-                    var img = System.Drawing.Image.FromFile(template.BackGroundImg_FullPath);
-                    if (img != null)
-                    {
-                        bufferG.FillPolygon(penN.Brush, p.ToArray());
-                        bufferG.DrawImage(img, p.ToArray());
-                    }
-                }
-                catch
-                {
-
-                }
-
-                //bufferG.Restore(gs);
-            }
+            
 
 
             // 缁樺埗绾�
@@ -686,6 +746,12 @@
             return new PointF(worldX, worldY);
         }
 
+        /// <summary>
+        /// 涓栫晫鎶曞奖鍧愭爣杞崲涓哄睆骞曞潗鏍�
+        /// </summary>
+        /// <param name="mapPos"></param>
+        /// <param name="z"></param>
+        /// <returns></returns>
         private PointF MapToScreen(PointF mapPos, float z = 0)
         {
 
@@ -752,7 +818,7 @@
             return new PointF(x, y);
         }
         /// <summary>
-        /// 鑾峰彇鍦板浘鎶曞奖鍧愭爣
+        /// 鑾峰彇涓栫晫鎶曞奖鍧愭爣
         /// </summary>
         /// <param name="point"></param>
         /// <param name="z"></param>

--
Gitblit v1.9.3