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