From 97e1e604737e70a9df2e83897d3bbf68292d0d72 Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期四, 19 十二月 2024 20:21:52 +0800
Subject: [PATCH] 代码修改

---
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs |  101 ++++++++++++++++++++++++++++----------------------
 1 files changed, 57 insertions(+), 44 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs
index d4c7b94..7e579d1 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs
@@ -19,10 +19,12 @@
         private XYDiagram _diagram;
         private XYDiagramDefaultPane _default_pane;
         private AxisX _axis_x;
-        private AxisY _axis_y; 
+        private AxisY _axis_y;
 
         private List<Yw.Geometry.Point2d> _point_pt_list; 
         private List<Yw.Geometry.Point2d> _line_pt_list;
+
+        private Series _series_pt; 
 
         private UniversalCoordinate _coordinate;
         private bool _initial_data = false; 
@@ -113,19 +115,15 @@
 
             _diagram = (XYDiagram)chartControl1.Diagram;
             _default_pane=_diagram.DefaultPane;
-            _axis_x = _diagram.AxisX;
-            //_axis_x.SetAxisXQDisplay();
+            _axis_x = _diagram.AxisX; 
             _axis_y = _diagram.AxisY;
-            //_axis_y.SetAxisYQLDisplay();
-
-           
+   
 
             _axis_x.Visibility = DefaultBoolean.False;
             _axis_x.GridLines.Visible = false;
             _axis_y.Visibility = DefaultBoolean.False;
             _axis_y.GridLines.Visible = false;
-             
-
+              
             this.chartControl1.SetChartMonoColorDisplay();
         }
 
@@ -151,12 +149,32 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary> 
+        public void Clear()
+        {
+            _initial_data = false;
+            _point_pt_list = null;
+            _line_pt_list = null;
+            _coordinate = null;
+            _series_pt = null;  
+
+            this.chartControl1.BeginInit();
+            this.chartControl1.Series.Clear();
+            this.chartControl1.AnnotationRepository.Clear();
+            this.chartControl1.Legend.CustomItems.Clear(); 
+            this.chartControl1.EndInit(); 
+        }
+
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary> 
         public void SetBindingData(List<Yw.Geometry.Point2d> point_pt_list, List<Yw.Geometry.Point2d> line_pt_list, string coordinate = null, Color? color = null)
         {
             _initial_data = false;
             _point_pt_list = point_pt_list;
             _line_pt_list = line_pt_list;
             _coordinate = UniversalCoordinate.ToModel(coordinate);
+            _series_pt = null;
 
             this.chartControl1.BeginInit();
             this.chartControl1.Series.Clear();
@@ -168,16 +186,15 @@
                 this.chartControl1.EndInit();
                 return;
             }
-             
-            AddPointSeries(color.Value, _axis_x, _axis_y, _default_pane, _point_pt_list);
-            AddLineSeries(color.Value, _axis_x, _axis_y, _default_pane, _line_pt_list); 
+
+            _series_pt = AddPointSeries(color.Value, _axis_x, _axis_y, _default_pane, _point_pt_list);
+            AddLineSeries(color.Value, _axis_x, _axis_y, _default_pane, _line_pt_list);
             if (_coordinate == null)
                 SetCoordinate();
 
             SetChartAxis();
             this.chartControl1.EndInit();
             _initial_data = true;
-              
         }
 
         //鏄惁鏄棤鏁堟暟鎹�
@@ -193,15 +210,17 @@
             {
                 return true;
             }
+            if (_series_pt == null)
+                return true;
             return false;
         }
 
         #region Add Chart Data 
 
-        private void AddPointSeries(Color color, AxisXBase axis_x, AxisYBase axis_y, XYDiagramPaneBase pane, List<Yw.Geometry.Point2d> pt_list)
+        private Series AddPointSeries(Color color, AxisXBase axis_x, AxisYBase axis_y, XYDiagramPaneBase pane, List<Yw.Geometry.Point2d> pt_list)
         {
             if (pt_list == null || !pt_list.Any())
-                return;
+                return null;
 
             var view = new DevExpress.XtraCharts.PointSeriesView();
             view.PointMarkerOptions.Size = 8;
@@ -234,6 +253,8 @@
             series.CrosshairLabelPattern = "{A}";
             series.Points.AddRange(series_pt_list.ToArray());
             this.chartControl1.Series.Add(series);
+
+            return series;
         }
 
         private void AddLineSeries(Color color, AxisXBase axis_x, AxisYBase axis_y, XYDiagramPaneBase pane, List<Yw.Geometry.Point2d> pt_list, DashStyle dash = DashStyle.Solid)
@@ -365,38 +386,37 @@
         #endregion Calc
 
         #region ChartEvent
-
-        private SeriesPoint _pick_point = null;// 閫変腑鐐� 
+         
+        private int _pick_point_index = -1;
         private void chartControl1_MouseDown(object sender, MouseEventArgs e)
         {
             if (!_initial_data)
                 return;
             var hitInfo = chartControl1.CalcHitInfo(e.Location);
-            _pick_point = null;
+            _pick_point_index = -1;
             if (e.Button == MouseButtons.Left)
             {
-                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int)
+                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int index)
                 {
-                    _pick_point = hitInfo.SeriesPoint;
+                    _pick_point_index = index;
                 }
             }
         }
-
 
         private void chartControl1_MouseMove(object sender, MouseEventArgs e)
         {
             if (!_mouse_mode)
                 return;
-            if (IsInvalidData())
+            if (_pick_point_index < 0)
                 return;
-            if (_pick_point == null)
+            if (IsInvalidData())
                 return;
             var diagram_coordinates = _diagram.PointToDiagram(e.Location);
             var axis_value = diagram_coordinates.GetAxisValue(_axis_y);
             if (axis_value == null)
                 return;
-            _pick_point.Values[0] = axis_value.NumericalValue;
-            _pick_point.NumericalArgument = diagram_coordinates.NumericalArgument;
+            _series_pt.Points[_pick_point_index].Values[0] = axis_value.NumericalValue;
+            _series_pt.Points[_pick_point_index].NumericalArgument = diagram_coordinates.NumericalArgument;
         }
 
 
@@ -404,32 +424,28 @@
         {
             if (!_mouse_mode)
                 return;
+            if (_pick_point_index < 0)
+                return;
             if (IsInvalidData())
-                return;
-            if (_pick_point == null)
-                return;
-            if (_pick_point.Tag is not int index)
-                return;
-            var x = _pick_point.NumericalArgument;
-            var y = _pick_point.Values[0];
-            SetPointPtValue(index, x, y);
-
-            _pick_point = null;
+                return; 
+            var x = _series_pt.Points[_pick_point_index].NumericalArgument;
+            var y = _series_pt.Points[_pick_point_index].Values[0];
+            SetPointValue(_pick_point_index, x, y);
+            _pick_point_index = -1;
         }
-
 
         private void chartControl1_KeyUp(object sender, KeyEventArgs e)
         {
-            if (!_initial_data)
+            if (_mouse_mode)
                 return;
-            if (_pick_point == null)
+            if (_pick_point_index < 0)
                 return;
             if (IsInvalidData())
                 return;
             double space_x = _coordinate.CoordSpaceX / 50;
             double space_y = _coordinate.CoordSpaceY / 50;
-            double x = _pick_point.NumericalArgument;
-            double y = _pick_point.Values[0];
+            double x = _series_pt.Points[_pick_point_index].NumericalArgument;
+            double y = _series_pt.Points[_pick_point_index].Values[0];
             if (e.KeyCode == Keys.Up)
             {
                 y += space_y;
@@ -446,17 +462,14 @@
             {
                 x += space_x;
             }
-            _pick_point.Values[0] = y;
-            _pick_point.NumericalArgument = x;
-            var index = _pick_point.Tag.is
-            SetPointPtValue();
+            SetPointValue(_pick_point_index, x, y);
         }
 
 
         /// <summary>
         /// 鏇存柊鏁版嵁
         /// </summary>
-        private void SetPointPtValue(int index, double x, double y)
+        private void SetPointValue(int index, double x, double y)
         {
             if (IsInvalidData())
                 return;

--
Gitblit v1.9.3