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