From 77c032ffe145bbe2c489afbd1a0aa71d62b94203 Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期二, 24 十二月 2024 17:50:31 +0800
Subject: [PATCH] 图表轴

---
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/01-view/PumpViewChart.cs |   73 +++++++++++++++++++-----------------
 1 files changed, 39 insertions(+), 34 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/01-view/PumpViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/01-view/PumpViewChart.cs
index 6e8d69b..a39a32c 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/01-view/PumpViewChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/01-view/PumpViewChart.cs
@@ -230,33 +230,40 @@
         {
             
         }
+
         private void ChartControl1_CustomPaint(object sender, CustomPaintEventArgs e)
         {
             if (!_initial_data)
                 return; 
             if (_vm == null)
                 return;
+            if (_axis_x_flow.Visibility== DefaultBoolean.False)
+                return;
             if (e is not DXCustomPaintEventArgs dx_args)
                 return;
             var cache = dx_args.Cache;
-            cache.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
-
+            cache.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
             if (_vm.EqualEffList != null && _vm.EqualEffList.Any())
             {
                 using Pen pen = new(Color.Green, 2);
                 foreach (var eq_eff in _vm.EqualEffList)
                 {
-                    var eq_eff_pt_list = eq_eff.CurveEqualEff;
                     if (!eq_eff.IsValid())
                         continue;
-                    var pic_eq_eff_pt_list = eq_eff_pt_list.Select(x =>
+                    var eq_eff_pt_list = eq_eff.CurveEqualEff; 
+                    var pic_eq_eff_pt_list = new List<Point>();
+                    foreach (var eq_eff_pt in eq_eff_pt_list)
                     {
-                        var pt = _diagram.DiagramToPoint(x.X, x.Y, _axis_x_flow, _axis_y_head).Point;
-                        return pt;
-                    }).ToList();
+                        var x = eq_eff_pt.X;
+                        var y = eq_eff_pt.Y;
+                        var coordinates = _diagram.DiagramToPoint(x, y, _diagram.AxisX, _diagram.AxisY);
+                        if (coordinates == null)
+                            continue;
+                        var pt = new Point(coordinates.Point.X, coordinates.Point.Y);
+                        pic_eq_eff_pt_list.Add(pt);
+                    }
+                   
                     var pt_count = pic_eq_eff_pt_list.Count;
-
-                    // 缁樺埗
                     if (pt_count > 2)
                     {
                         if (eq_eff.IsClosed)
@@ -281,7 +288,8 @@
                         Rectangle rc = new Rectangle(pic_eq_eff_pt_list[0].X - 2, pic_eq_eff_pt_list[0].Y - 2, 4, 4);
                         using (Brush b = new SolidBrush(pen.Color))
                             cache.FillEllipse(b, rc);
-                    }
+                    } 
+
                 }
             }
 
@@ -315,13 +323,11 @@
         /// </summary>
         public void SetBindingData(PumpCurveViewModel vm, bool default_visible = true, bool split_panel = false, bool eff_visible = false, bool power_visible = true)
         {
-            _vm = vm; 
+            _vm = vm;
             _default_visible = default_visible;
             _split_panel = split_panel;
             _eff_visible = eff_visible;
-            _eff_visible = true;
             _power_visible = power_visible;
-            _power_visible = true;
             this.chartControl1.BeginInit();
             this.chartControl1.Series.Clear();
             this.chartControl1.AnnotationRepository.Clear();
@@ -339,7 +345,7 @@
 
             AddEquip(vm.Equip);
             AddVariableSpeedList(vm.VariableSpeedList);
-             AddEqualEffList(vm.EqualEffList);
+            AddEqualEffList(vm.EqualEffList);
             AddEqualPowerList(vm.EqualPowerList);
 
             if (vm.Coordinate == null)
@@ -661,7 +667,7 @@
                 {
                     p_list_list.Add(_vm.CurveQP.Select(x => x.Y).ToList());
                 }
-            } 
+            }
 
             if (_vm.Equip != null)
             {
@@ -676,11 +682,11 @@
                 {
                     q_list_list.Add(item.CurveQH.Select(x => x.X).ToList());
                     h_list_list.Add(item.CurveQH.Select(x => x.Y).ToList());
-                    if (item.CurveQE != null )
+                    if (item.CurveQE != null)
                     {
                         e_list_list.Add(item.CurveQE.Select(x => x.Y).ToList());
                     }
-                    if (item.CurveQP != null )
+                    if (item.CurveQP != null)
                     {
                         p_list_list.Add(item.CurveQP.Select(x => x.Y).ToList());
                     }
@@ -718,11 +724,13 @@
                 _maxH = Math.Max(_maxH, list.Max());
             }
 
+
             foreach (var list in e_list_list)
             {
                 _minE = Math.Max(_minE, list.Min());
                 _maxE = Math.Max(_maxE, list.Max());
             }
+             
 
             foreach (var list in p_list_list)
             {
@@ -730,14 +738,13 @@
                 _maxP = Math.Max(_maxP, list.Max());
             }
 
-
             _coordinate = PumpCoordinate.CalcCoordinate(_minQ, _maxQ, _minH, _maxH, _minE, _maxE, _minP, _maxP);
             if (_coordinate == null)
                 return;
             if (_coordinate.CoordMinQ + _coordinate.CoordSpaceQ * this._coordinate.GridNumberX < _maxQ * 1.05)
             {
                 _coordinate.GridNumberX++;
-            }
+            } 
 
         }
 
@@ -746,17 +753,16 @@
         /// </summary>
         private void SetChartAxis()
         {
+            _axis_x_flow.Visibility = DefaultBoolean.False;
+            _axis_x_flow.GridLines.Visible = false;
+            _axis_y_head.Visibility = DefaultBoolean.False;
+            _axis_y_head.GridLines.Visible = false;
+            _axis_y_eff.Visibility = DefaultBoolean.False;
+            _axis_y_eff.GridLines.Visible = false;
+            _axis_y_power.Visibility = DefaultBoolean.False;
+            _axis_y_power.GridLines.Visible = false;
             if (_coordinate == null)
-            {
-                _axis_x_flow.Visibility = DefaultBoolean.False;
-                _axis_x_flow.GridLines.Visible = false;
-                _axis_y_head.Visibility = DefaultBoolean.False;
-                _axis_y_head.GridLines.Visible = false;
-                _axis_y_eff.Visibility = DefaultBoolean.False;
-                _axis_y_eff.GridLines.Visible = false;
-                _axis_y_power.Visibility = DefaultBoolean.False;
-                _axis_y_power.GridLines.Visible = false;
-
+            { 
                 _const_line_x.Visible = false;
                 _const_line_y.Visible = false;
                 _bottom_pane.Visibility = ChartElementVisibility.Hidden;
@@ -857,8 +863,7 @@
 
                 _axis_y_power.SetAxisRange(_coordinate.DispMinP(), _coordinate.DispMaxP());
 
-
-                _bottom_pane.Visibility = ChartElementVisibility.Visible;
+                _bottom_pane.Visibility = _power_visible ? ChartElementVisibility.Visible : ChartElementVisibility.Hidden;
             }
             else
             {
@@ -869,10 +874,10 @@
                 else if ((!_eff_visible) && _power_visible)
                 {
                     var grid_count_eff = _coordinate.EndLineNoE - _coordinate.StartLineNoE;
-
+                    if (_coordinate.EndLineNoH - _coordinate.StartLineNoH < 6)
+                        grid_count_eff++;
                     var grid_delete_head = grid_count_eff * _coordinate.CoordSpaceH;
                     grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head;
-
                     var grid_delete_power = grid_count_eff * _coordinate.CoordSpaceP;
 
                     _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH);
@@ -885,7 +890,7 @@
                     var grid_delete_head = grid_count_power * _coordinate.CoordSpaceH;
                     grid_delete_head = _coordinate.CoordMinH < 0 ? -grid_delete_head : grid_delete_head;
 
-                    var grid_delete_eff = (grid_count_power) * _coordinate.CoordSpaceE;
+                    var grid_delete_eff = grid_count_power * _coordinate.CoordSpaceE;
                     grid_delete_eff = _coordinate.CoordMinE < 0 ? -grid_delete_eff : grid_delete_eff;
 
                     _axis_y_head.SetAxisRange(_coordinate.CoordMinH - grid_delete_head, _coordinate.CoordMinH + _coordinate.GridNumberY * _coordinate.CoordSpaceH);

--
Gitblit v1.9.3