Shuxia Ning
2024-12-24 77c032ffe145bbe2c489afbd1a0aa71d62b94203
图表轴
已修改6个文件
202 ■■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleWorkingLossCurveCtrl.Designer.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleWorkingLossCurveCtrl.cs 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleWorkingLossCurveCtrl.resx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/01-view/PumpViewChart.cs 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/03-import/03-point/PumpChartPointImportCtrl.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs
@@ -10,6 +10,11 @@
        private Yw.Vmo.PhartDiagramExGraphListVmo _vmo = null;
        private Yw.WinFrmUI.Phart.PumpCurveViewModel _vm = null;
        private bool _default_visible = true;
        private bool _power_visible = false;
        private bool _eff_visible = false;
        private bool _split_panel = false;
        /// <summary>
        /// 数据变更事件
        /// </summary>
@@ -79,6 +84,7 @@
                }
            }
            //vm.VariableSpeedList = new List<Yw.WinFrmUI.Phart.PumpChartVariableSpeedViewModel>(); 
            //vm.EqualPowerList = new List<Yw.WinFrmUI.Phart.PumpChartEqualPowerViewModel>(); 
            //for (int eff = 30; eff < 90; eff += 1)
@@ -123,15 +129,49 @@
            //    vm.VariableSpeedList.Add(vs);
            //}
            this.pumpChart1.SetBindingData(vm);
            SetBindingData(vm, _default_visible, _split_panel, _eff_visible, _power_visible);
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(Yw.WinFrmUI.Phart.PumpCurveViewModel vm, bool default_visible = true, bool split_panel = false, bool eff_visible = false, bool power_visible = true)
        {
            _vm = vm;
            if (vm == null)
            {
                ClearBindingData();
                return;
            }
            this.pumpChart1.SetBindingData(vm, default_visible, split_panel, eff_visible, power_visible);
        }
        /// <summary>
        /// 清空绑定数据
        /// </summary>
        public void ClearBindingData()
        {
            this.pumpChart1.ClearBindingData();
        }
        private void barCekEffVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            _eff_visible = this.barCekEffVisible.Checked;
            SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible);
        }
        private void barCekPowerVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            _power_visible = this.barCekPowerVisible.Checked;
            SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible);
        }
        private void barCekSplitPanel_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            _split_panel = this.barCekSplitPanel.Checked;
            SetBindingData(_vm, _default_visible, _split_panel, _eff_visible, _power_visible);
        }
        /// <summary>
@@ -142,19 +182,6 @@
            return new Yw.Vmo.PhartDiagramExGraphListVmo();
        }
        private void barCekEffVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
        }
        private void barCekPowerVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
        }
        private void barCekSplitPanel_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleWorkingLossCurveCtrl.Designer.cs
@@ -72,6 +72,7 @@
            freePosition1.InnerIndents.Top = 35;
            textAnnotation1.ShapePosition = freePosition1;
            chartControl1.AnnotationRepository.AddRange(new DevExpress.XtraCharts.Annotation[] { textAnnotation1 });
            chartControl1.CrosshairOptions.ContentShowMode = DevExpress.XtraCharts.CrosshairContentShowMode.Label;
            chartControl1.CrosshairOptions.ShowArgumentLabels = true;
            chartControl1.CrosshairOptions.ShowValueLabels = true;
            chartControl1.CrosshairOptions.ShowValueLine = true;
@@ -88,6 +89,7 @@
            xyDiagram1.AxisX.WholeRange.StartSideMargin = 0D;
            xyDiagram1.AxisY.GridLines.Visible = false;
            xyDiagram1.AxisY.MinorCount = 1;
            xyDiagram1.AxisY.NumericScaleOptions.AutoGrid = false;
            xyDiagram1.AxisY.Tickmarks.MinorVisible = false;
            xyDiagram1.AxisY.VisibleInPanesSerializable = "-1";
            xyDiagram1.EnableAxisXScrolling = true;
@@ -99,13 +101,20 @@
            chartControl1.Legend.LegendID = -1;
            chartControl1.Legend.MarkerMode = DevExpress.XtraCharts.LegendMarkerMode.CheckBox;
            chartControl1.Location = new Point(0, 0);
            chartControl1.Margin = new Padding(4, 5, 4, 5);
            chartControl1.Name = "chartControl1";
            chartControl1.Padding.Bottom = 10;
            chartControl1.Padding.Left = 20;
            chartControl1.Padding.Right = 10;
            chartControl1.Padding.Top = 10;
            series1.ArgumentDataMember = "X";
            series1.CrosshairEnabled = DevExpress.Utils.DefaultBoolean.True;
            series1.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.True;
            series1.CrosshairLabelPattern = "总水头:{V}m";
            series1.CrosshairLabelPattern = "总水头:{V:N1}m";
            series1.CrosshairLabelVisibility = DevExpress.Utils.DefaultBoolean.True;
            series1.CrosshairTextOptions.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.True;
            series1.DataSource = lossBindingSource;
            series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False;
            series1.LegendTextPattern = "总水头";
            series1.Name = "SeriesLoss";
            series1.SeriesID = 0;
@@ -118,8 +127,9 @@
            series2.ArgumentDataMember = "X";
            series2.CrosshairEnabled = DevExpress.Utils.DefaultBoolean.True;
            series2.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.True;
            series2.CrosshairLabelPattern = "高程:{V}m";
            series2.CrosshairLabelPattern = "高程:{V:N1}m";
            series2.CrosshairLabelVisibility = DevExpress.Utils.DefaultBoolean.True;
            series2.CrosshairTextOptions.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.True;
            series2.DataSource = elevBindingSource;
            series2.LegendTextPattern = "高程";
            series2.Name = "SeriesElev";
@@ -139,7 +149,7 @@
            chartControl1.SeriesTemplate.ArgumentDataMember = "X";
            chartControl1.SeriesTemplate.ToolTipHintDataMember = "Name";
            chartControl1.SeriesTemplate.ValueDataMembersSerializable = "Y";
            chartControl1.Size = new Size(848, 569);
            chartControl1.Size = new Size(1211, 894);
            chartControl1.TabIndex = 0;
            chartControl1.ToolTipEnabled = DevExpress.Utils.DefaultBoolean.True;
            chartControl1.ToolTipOptions.ShowForSeries = true;
@@ -148,11 +158,12 @@
            // 
            // HydroSingleWorkingLossCurveCtrl
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleDimensions = new SizeF(10F, 22F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(chartControl1);
            Margin = new Padding(4, 5, 4, 5);
            Name = "HydroSingleWorkingLossCurveCtrl";
            Size = new Size(848, 569);
            Size = new Size(1211, 894);
            ((ISupportInitialize)lossBindingSource).EndInit();
            ((ISupportInitialize)elevBindingSource).EndInit();
            ((ISupportInitialize)textAnnotation1).EndInit();
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleWorkingLossCurveCtrl.cs
@@ -1,21 +1,8 @@
using DevExpress.Charts.Native;
using DevExpress.Utils.About;
using DevExpress.Drawing;
using DevExpress.XtraCharts;
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Yw.Hydro;
using Yw.EPAnet;
using DevExpress.Mvvm.POCO;
using DevExpress.Utils;
using DevExpress.Drawing;
using Yw.Hydro;
namespace Yw.WinFrmUI
{
@@ -23,7 +10,7 @@
    {
        public HydroSingleWorkingLossCurveCtrl()
        {
            InitializeComponent();
            InitializeComponent();
        }
        /// <summary>
@@ -184,6 +171,7 @@
            diagram.AxisY.Tickmarks.MinorVisible = false;
            diagram.AxisY.WholeRange.SideMarginsValue = 0;
            diagram.AxisY.CrosshairAxisLabelOptions.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.True;
            if (pressMax <= 10)
            {
                diagram.AxisY.WholeRange.MinValue = Math.Floor(pressMin);
@@ -231,17 +219,19 @@
            e.CrosshairLineElement.Color = Color.Green;
            e.CrosshairLineElement.LineStyle.DashStyle = DashStyle.DashDot;
            e.CrosshairLineElement.LineStyle.Thickness = 3;
            // Specify the back color for the crosshair argument axis label. 
            foreach (CrosshairAxisLabelElement axisLabelElement in e.CrosshairAxisLabelElements)
            {
                axisLabelElement.BackColor = Color.Blue;
                axisLabelElement.Text = $"{axisLabelElement.AxisValue:N2}";
            }
            foreach (CrosshairElementGroup group in e.CrosshairElementGroups)
            {
                CrosshairGroupHeaderElement groupHeaderElement = group.HeaderElement;
            {
                CrosshairGroupHeaderElement groupHeaderElement = group.HeaderElement;
                var pt = group.HeaderElement.SeriesPoints.FirstOrDefault();
                if (pt != null)
                {
@@ -250,11 +240,20 @@
                    {
                        groupHeaderElement.Text = model.Name;
                    }
                }
                }
                // Specify the text, text color and font for the crosshair group header element. 
                groupHeaderElement.TextColor = Color.Green;
                groupHeaderElement.DXFont = new DXFont("SegoeUI", 12, DXFontStyle.Bold);
                groupHeaderElement.Text = group.CrosshairElements[0].AxisLabelElement.Text;
                foreach (var ele in group.CrosshairElements)
                {
                    ele.AxisLabelElement.Text = $"{ele.AxisLabelElement.AxisValue:N1}";
                    ele.AxisLabelElement.DXFont = new DXFont(this.Font.Name, 6);
                    //ele.AxisLabelElement.Visible = false;
                }
                //// Obtain the first series.
                //CrosshairElement element = group.CrosshairElements[0];
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleWorkingLossCurveCtrl.resx
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Microsoft ResX Schema
    Version 2.0
@@ -48,7 +48,7 @@
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
@@ -121,6 +121,6 @@
    <value>17, 17</value>
  </metadata>
  <metadata name="elevBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>179, 17</value>
    <value>239, 17</value>
  </metadata>
</root>
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);
WinFrmUI/Yw.WinFrmUI.Phart.Core/02-pump/03-import/03-point/PumpChartPointImportCtrl.cs
@@ -321,7 +321,7 @@
            return true;   
        }
        private void Create()
        {
            if (IsInvalidData())