using DevExpress.Utils;
using DevExpress.XtraCharts;
using DevExpress.XtraCharts.Native;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using static NPOI.SS.Formula.PTG.ArrayPtg;
namespace IStation.WinFrmUI.Curve
{
///
///
///
public partial class CurveExpressChart_NotSplitPanel : DevExpress.XtraEditors.XtraUserControl
{
public CurveExpressChart_NotSplitPanel()
{
InitializeComponent();
InitialChart();
}
#region Private Variable
private XYDiagram _mainChartDiagram;
private AxisX _axisXQ;
private AxisY _axisYQH;
private SecondaryAxisY _axisYQE, _axisYQP;
private ConstantLine _workPointLine;
private ConstantLine _workHLine;
private Series _seriesCurveQH, _seriesCurveQE, _seriesCurveQP;
private Series _seriesPointQH, _seriesPointQE, _seriesPointQP;
private Model.CurveExpress _curveExpressQH;
private Model.CurveExpress _curveExpressQE;
private Model.CurveExpress _curveExpressQP;
private List _curvePointsQH;
private List _curvePointsQE;
private List _curvePointsQP;
private List _definePointsQH;
private List _definePointsQE;
private List _definePointsQP;
private Model.CurveCoordinateParas _coordinateParas;
private Model.GroupPoint _workPoint = new Model.GroupPoint(0, 0, 0, 0, 0);
private bool _initialData = false;
#endregion
#region Public Variable
///
/// 定义点是否可见
///
public bool DefinePointVisible
{
get => _definePointVisible;
set
{
_definePointVisible = value;
SetDefinePointVisible(_definePointVisible);
}
}
private bool _definePointVisible = false;
///
/// 工作线是否可见
///
public bool LineVisible
{
get => _lineVisible;
set
{
_lineVisible = value;
this.barCekLineVisible.Checked = LineVisible;
}
}
private bool _lineVisible = false;
#endregion
#region Public Evnet
public event Action OnCurveCoordinateParasChanged;
#endregion
#region Initial
///
/// 初始化图表
///
private void InitialChart()
{
this.chartControl1.SetChartDisplay();
this.chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
_mainChartDiagram = (XYDiagram)chartControl1.Diagram;
_axisXQ = _mainChartDiagram.AxisX;
_axisXQ.SetAxisXQDisplay();
_axisYQH = _mainChartDiagram.AxisY;
_axisYQH.SetAxisYQHDisplay();
_axisYQE = _mainChartDiagram.SecondaryAxesY.GetAxisByName("AxisYQE");
_axisYQE.SetSecondaryAxisYQEDisplay();
_axisYQP = _mainChartDiagram.SecondaryAxesY.GetAxisByName("AxisYQP");
_axisYQP.SetSecondaryAxisYQPDisplay();
_workPointLine = (ConstantLine)_mainChartDiagram.AxisX.ConstantLines.GetElementByName("WorkPointLine");
_workPointLine.SetWorkPointLineDisplay();
_workHLine = (ConstantLine)_mainChartDiagram.AxisY.ConstantLines.GetElementByName("WorkHLine");
_workHLine.SetWorkHLineDisplay();
_seriesCurveQH = this.chartControl1.GetSeriesByName("SeriesCurveQH");
_seriesCurveQH.SetCurveQHDisplay();
_seriesCurveQE = this.chartControl1.GetSeriesByName("SeriesCurveQE");
_seriesCurveQE.SetCurveQEDisplay();
_seriesCurveQP = this.chartControl1.GetSeriesByName("SeriesCurveQP");
_seriesCurveQP.SetCurveQPDisplay();
_seriesPointQH = this.chartControl1.GetSeriesByName("SeriesPointQH");
_seriesPointQH.SetPointQHDisplay();
_seriesPointQE = this.chartControl1.GetSeriesByName("SeriesPointQE");
_seriesPointQE.SetPointQEDisplay();
_seriesPointQP = this.chartControl1.GetSeriesByName("SeriesPointQP");
_seriesPointQP.SetPointQPDisplay();
_axisXQ.Visibility = DefaultBoolean.False;
_axisXQ.GridLines.Visible = false;
_axisYQH.Visibility = DefaultBoolean.False;
_axisYQH.GridLines.Visible = false;
_axisYQE.Visibility = DefaultBoolean.False;
_axisYQE.GridLines.Visible = false;
_axisYQP.Visibility = DefaultBoolean.False;
_axisYQP.GridLines.Visible = false;
_workPointLine.Visible = false;
_workHLine.Visible = false;
_seriesPointQH.Visible = false;
_seriesPointQE.Visible = false;
_seriesPointQP.Visible = false;
this.chartControl1.ObjectHotTracked += new DevExpress.XtraCharts.HotTrackEventHandler(this.chartControl1_ObjectHotTracked);
this.chartControl1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseMove);
this.chartControl1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseUp);
this.chartControl1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseDown);
}
///
/// 初始化图表数据
///
public void InitialChartData()
{
_initialData = false;
_curveExpressQH = null;
_curveExpressQE = null;
_curveExpressQP = null;
_curvePointsQH = null;
_curvePointsQE = null;
_curvePointsQP = null;
_definePointsQH = null;
_definePointsQE = null;
_definePointsQP = null;
_coordinateParas = null;
_workPoint = new Model.GroupPoint(0, 0, 0, 0, 0);
UpdateChart(false);
}
#endregion
///
///
///
///
///
///
///
///
///
///
///
///
///
public void SetBindingData(
Model.CurveExpress curveQH, Model.CurveExpress curveQE,
Model.CurveExpress curveQP, List definePointsQH = null,
List definePointsQE = null, List definePointsQP = null,
Model.CurveCoordinateParas coordinateParas = null, bool calcCoordinate = false)
{
if (curveQH == null)
{
InitialChartData();
return;
}
_initialData = true;
_curveExpressQH = curveQH;
_curveExpressQE = curveQE;
_curveExpressQP = curveQP;
_curvePointsQH = Model.FitCurveHelper.GetFitPoints(_curveExpressQH, 12);
_curvePointsQE = Model.FitCurveHelper.GetFitPoints(_curveExpressQE, 12);
_curvePointsQP = Model.FitCurveHelper.GetFitPoints(_curveExpressQP, 12);
_definePointsQH = definePointsQH;
_definePointsQE = definePointsQE;
_definePointsQP = definePointsQP;
_coordinateParas = coordinateParas;
UpdateChart(calcCoordinate);
}
///
/// 更新图表
///
/// 计算坐标
public void UpdateChart(bool calcCoordinate = false)
{
if (_curveExpressQE == null)
{
this.barBtnPositioningMaxE.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
}
else
{
this.barBtnPositioningMaxE.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
}
if (_curveExpressQP == null)
{
}
else
{
}
if (_curveExpressQH == null)
return;
if (calcCoordinate || _coordinateParas == null)
{
//不强迫计算,就用上次更新的坐标系
CalcCoordinate();
}
CalcChartAxis();
CalcSeries();
CalcWorkPointByQ();
}
#region Calc
///
/// 计算坐标
///
public void CalcCoordinate()
{
if (_curvePointsQH == null || _curvePointsQH.Count < 4)
{
//设置成白板坐标
_coordinateParas = new Model.CurveCoordinateParas();
_coordinateParas.GridNumberX = 30;
_coordinateParas.GridNumberY = 16;
//显示的坐标线号
_coordinateParas.StartLineNoH = 10;
_coordinateParas.EndLineNoH = 15;
_coordinateParas.StartLineNoE = 0;
_coordinateParas.EndLineNoE = 10;
_coordinateParas.StartLineNoP = 2;
_coordinateParas.EndLineNoP = 9;
//坐标最小值和间隔
_coordinateParas.CoordMinQ = 0; _coordinateParas.CoordSpaceQ = 1000;
_coordinateParas.CoordMinH = 10; _coordinateParas.CoordSpaceH = 100;
_coordinateParas.CoordMinE = 0; _coordinateParas.CoordSpaceE = 100;
_coordinateParas.CoordMinP = 10; _coordinateParas.CoordSpaceP = 100;
return;
}
_coordinateParas = Model.CurveCoordinateParas.CalcCoordinate(_curveExpressQH, _curveExpressQE, _curveExpressQP);
}
///
/// 计算图表轴
///
public void CalcChartAxis()
{
if (_coordinateParas == null)
{
_axisXQ.Visibility = DefaultBoolean.False;
_axisXQ.GridLines.Visible = false;
_axisYQH.Visibility = DefaultBoolean.False;
_axisYQH.GridLines.Visible = false;
_axisYQE.Visibility = DefaultBoolean.False;
_axisYQE.GridLines.Visible = false;
_axisYQP.Visibility = DefaultBoolean.False;
_axisYQP.GridLines.Visible = false;
_workPointLine.Visible = false;
_workHLine.Visible = false;
return;
}
//流量
if (_curvePointsQH != null)
{
//计算刻度
var labels = new List();
var disQ = _coordinateParas.CoordMinQ;
for (int i = 0; i < _coordinateParas.GridNumberX + 1; i++)
{
labels.Add(new CustomAxisLabel(disQ.ToString("N0"), disQ));
disQ = disQ + _coordinateParas.CoordSpaceQ;
}
//坐标刻度
_axisXQ.CustomLabels.Clear();
_axisXQ.CustomLabels.AddRange(labels.ToArray());
_axisXQ.Visibility = DefaultBoolean.True;
_axisXQ.GridLines.Visible = true;
_axisXQ.SetAxisRange(_coordinateParas.CoordMinQ, _coordinateParas.CoordMinQ + _coordinateParas.GridNumberX * _coordinateParas.CoordSpaceQ);
}
//扬程
if (_curvePointsQH != null)
{
//计算刻度
var labels = new List();
var disH = _coordinateParas.CoordMinH + _coordinateParas.CoordSpaceH * _coordinateParas.StartLineNoH;
disH -= 1;
for (int i = _coordinateParas.StartLineNoH; i < _coordinateParas.EndLineNoH + 2; i++)
{
labels.Add(new CustomAxisLabel(disH.ToString(), disH));
disH = disH + _coordinateParas.CoordSpaceH;
}
_axisYQH.CustomLabels.Clear();
_axisYQH.CustomLabels.AddRange(labels.ToArray());
_axisYQH.Visibility = DefaultBoolean.True;
_axisYQH.GridLines.Visible = true;
if (_curveExpressQE == null && _curveExpressQP == null)
{
_axisYQH.SetAxisRange(_coordinateParas.DispMinH(), _coordinateParas.DispMaxH());
}
else
{
_axisYQH.SetAxisRange(_coordinateParas.CoordMinH, _coordinateParas.CoordMinH + _coordinateParas.GridNumberY * _coordinateParas.CoordSpaceH);
}
}
//效率
if (_curvePointsQE != null)
{
//计算刻度
var labels = new List();
var disE = _coordinateParas.CoordMinE + _coordinateParas.CoordSpaceE * _coordinateParas.StartLineNoE;
for (int i = _coordinateParas.StartLineNoE; i < _coordinateParas.EndLineNoE + 1; i++)
{
labels.Add(new CustomAxisLabel(disE.ToString(), disE));
disE = disE + _coordinateParas.CoordSpaceE;
}
_axisYQE.CustomLabels.Clear();
_axisYQE.CustomLabels.AddRange(labels.ToArray());
_axisYQE.Visibility = DefaultBoolean.True;
_axisYQE.GridLines.Visible = true;
_axisYQE.SetAxisRange(_coordinateParas.CoordMinE, _coordinateParas.CoordMinE + _coordinateParas.GridNumberY * _coordinateParas.CoordSpaceE);
}
//功率
if (_curvePointsQP != null)
{
//计算刻度
var labels = new List();
double disP = _coordinateParas.CoordMinP + _coordinateParas.CoordSpaceP * _coordinateParas.StartLineNoP;
for (int i = _coordinateParas.StartLineNoP; i < _coordinateParas.EndLineNoP + 1; i++)
{
labels.Add(new CustomAxisLabel(disP.ToString(), disP));
disP = disP + _coordinateParas.CoordSpaceP;
}
_axisYQP.CustomLabels.Clear();
_axisYQP.CustomLabels.AddRange(labels.ToArray());
_axisYQP.SetAxisRange(_coordinateParas.CoordMinP, _coordinateParas.CoordMinP + _coordinateParas.GridNumberY * _coordinateParas.CoordSpaceP);
_axisYQP.Visibility = DefaultBoolean.True;
_axisYQP.GridLines.Visible = true;
}
}
///
/// 计算系列
///
public void CalcSeries()
{
if (_curvePointsQH != null && _curvePointsQH.Count > 3)
{
_seriesCurveQH.Visible = true;
_seriesCurveQH.Points.Clear();
foreach (var curvePoint in _curvePointsQH)
{
var seriesPoint = new SeriesPoint(curvePoint.X, curvePoint.Y);
_seriesCurveQH.Points.Add(seriesPoint);
}
}
else
{
_seriesCurveQH.Points.Clear();
_seriesCurveQH.Visible = false;
_workPointLine.Visible = false;
_workHLine.Visible = false;
}
if (_curvePointsQE != null && _curvePointsQE.Count > 3)
{
_seriesCurveQE.Visible = true;
_seriesCurveQE.Points.Clear();
foreach (var curvePoint in _curvePointsQE)
{
var seriesPoint = new SeriesPoint(curvePoint.X, curvePoint.Y);
_seriesCurveQE.Points.Add(seriesPoint);
}
}
else
{
_seriesCurveQE.Points.Clear();
_seriesCurveQE.Visible = false;
}
if (_curvePointsQP != null && _curvePointsQP.Count > 3)
{
_seriesCurveQP.Visible = true;
_seriesCurveQP.Points.Clear();
foreach (var curvePoint in _curvePointsQP)
{
var seriesPoint = new SeriesPoint(curvePoint.X, curvePoint.Y);
_seriesCurveQP.Points.Add(seriesPoint);
}
}
else
{
_seriesCurveQP.Points.Clear();
_seriesCurveQP.Visible = false;
}
if (_definePointsQH != null && _definePointsQH.Any())
{
_seriesPointQH.Points.Clear();
foreach (var definePoint in _definePointsQH)
{
var seriesPoint = new SeriesPoint(definePoint.X, definePoint.Y);
_seriesPointQH.Points.Add(seriesPoint);
}
}
if (_definePointsQE != null && _definePointsQE.Any())
{
_seriesPointQE.Points.Clear();
foreach (var definePoint in _definePointsQE)
{
var seriesPoint = new SeriesPoint(definePoint.X, definePoint.Y);
_seriesPointQE.Points.Add(seriesPoint);
}
}
if (_definePointsQP != null && _definePointsQP.Any())
{
_seriesPointQP.Points.Clear();
foreach (var definePoint in _definePointsQP)
{
var seriesPoint = new SeriesPoint(definePoint.X, definePoint.Y);
_seriesPointQP.Points.Add(seriesPoint);
}
}
}
///
/// 计算工作点
///
///
public void CalcWorkPointByQ(double? workQ = null)
{
if (!_lineVisible)
{
_mainChartDiagram.DefaultPane.Title.Text = "*";
_workHLine.Visible = false;
_workHLine.Title.Visible = false;
_workPointLine.Visible = false;
_workPointLine.Title.Visible = false;
return;
}
else
{
_workHLine.Visible = true;
_workHLine.Title.Visible = true;
_workPointLine.Visible = true;
_workPointLine.Title.Visible = true;
}
if (_curveExpressQH == null)
return;
var minQ = _curvePointsQH.Min(x => x.X);
var maxQ = _curvePointsQH.Max(x => x.X);
if (workQ == null)
{
workQ = (minQ + maxQ) / 2;
}
else
{
if (workQ < minQ || workQ > maxQ)
return;
}
_workPoint.Q = workQ.Value;
_workPoint.H = Model.FitCurveHelper.GetFitPointY(_curveExpressQH, _workPoint.Q);
var workInfoStringBuilder = new StringBuilder();
workInfoStringBuilder.AppendFormat("流量:{0:N1} 扬程:{1:N1}", _workPoint.Q, _workPoint.H);
if (_curveExpressQE != null)
{
_workPoint.E = Model.FitCurveHelper.GetFitPointY(_curveExpressQE, _workPoint.Q);
workInfoStringBuilder.AppendFormat(" 效率:{0:N1}", _workPoint.E);
}
if (_curveExpressQP != null)
{
_workPoint.P = Model.FitCurveHelper.GetFitPointY(_curveExpressQP, _workPoint.Q);
workInfoStringBuilder.AppendFormat(" 功率:{0:N1}", _workPoint.P);
}
_workPointLine.AxisValue = _workPoint.Q;
_workPointLine.Title.Text = _workPoint.Q.ToString("N1");
_workHLine.AxisValue = _workPoint.H;
_workHLine.Title.Text = _workPoint.H.ToString("N1");
//测试展示效果
_mainChartDiagram.DefaultPane.Title.Text = workInfoStringBuilder.ToString();
}
///
/// 根据扬程计算工作点
///
///
///
///
public void CalcWorkPointByH(double workH)
{
if (!_lineVisible)
return;
if (_curveExpressQH == null)
return;
var minH = _curvePointsQH.Min(x => x.Y);
var maxH = _curvePointsQH.Max(x => x.Y);
if (workH < minH || workH > maxH)
return;
var InterPoints = Model.FitCurveHelper.GetInterPointX(_curveExpressQH, workH);
if (InterPoints == null || InterPoints.Count == 0)
return;
var workQ = InterPoints.Last().X;
CalcWorkPointByQ(workQ);
}
///
/// 根据最大效率计算工作点
///
///
///
///
public void CalcWorkPointByMaxE()
{
if (!_lineVisible)
return;
if (_curveExpressQE == null)
return;
var maxE = Model.FitCurveHelper.GetMaxPoint(_curveExpressQE);
var workQ = maxE.X;
CalcWorkPointByQ(workQ);
}
///
/// 根据最大流量计算工作点
///
///
///
///
public void CalcWorkPointByMaxQ()
{
if (!_lineVisible)
return;
if (_curveExpressQH == null)
return;
var workQ = _curveExpressQH.Max;
CalcWorkPointByQ(workQ);
}
#endregion
#region ChartEvent
// 右键对象
private object _rightClickObj = null;
ToolTipController toolTip = new ToolTipController();
private void chartControl1_ObjectHotTracked(object sender, HotTrackEventArgs e)
{
if (!_initialData)
return;
if (e.AdditionalObject is SeriesPoint seriesPoint)
{
var tip = string.Format("X:{0:N1} Y:{1:N1}", seriesPoint.Argument, seriesPoint.Values[0]);
toolTip.ShowHint(tip);
}
else
{
toolTip.HideHint();
}
}
private bool _onMoveWorkPointLine = false;
private bool _onMoveWorkHLine = false;
private void chartControl1_MouseDown(object sender, MouseEventArgs e)
{
if (!_initialData)
return;
var hitInfo = chartControl1.CalcHitInfo(e.Location);
if (e.Button == MouseButtons.Left)
{
if (hitInfo.InSeries)
{
_rightClickObj = hitInfo.Series;
}
else if (hitInfo.InAxis)
{
_rightClickObj = hitInfo.Axis;
}
else if (hitInfo.InConstantLine)
{
if (hitInfo.ConstantLine == _workPointLine)
{
_onMoveWorkPointLine = true;
}
else if (hitInfo.ConstantLine == _workHLine)
{
_onMoveWorkHLine = true;
}
}
else if (hitInfo.InAnnotation)
{
_rightClickObj = hitInfo.Annotation;
}
else
{
_rightClickObj = null;
}
}
else if (e.Button == MouseButtons.Right)
{
if (hitInfo.InConstantLine)
{
this.popMenuLine.ShowPopup(MousePosition);
}
else
{
this.popMenuChart.ShowPopup(MousePosition);
}
}
}
private void chartControl1_MouseMove(object sender, MouseEventArgs e)
{
if (!_initialData)
return;
if (_onMoveWorkPointLine)
{
var diagramCoordinates = _mainChartDiagram.PointToDiagram(e.Location);
var axisValue = diagramCoordinates.GetAxisValue(_axisXQ);
if (axisValue == null)
return;
double chartQ = axisValue.NumericalValue;
CalcWorkPointByQ(chartQ);
}
else if (_onMoveWorkHLine)
{
var diagramCoordinates = _mainChartDiagram.PointToDiagram(e.Location);
var axisValue = diagramCoordinates.GetAxisValue(_axisYQH);
double chartH = axisValue.NumericalValue;
if (axisValue == null)
return;
CalcWorkPointByH(chartH);
}
}
private void chartControl1_MouseUp(object sender, MouseEventArgs e)
{
if (!_initialData)
return;
_onMoveWorkPointLine = false;
_onMoveWorkHLine = false;
}
#endregion
#region Right Click Menu
#region Event
private void barBtnSetAxisQValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_curvePointsQH == null || !_curvePointsQH.Any())
return;
var dlg = new AxisValueDlg();
dlg.SetBindingData();
dlg.VerifyValueChanged += (value) =>
{
var min = _curvePointsQH.Min(x => x.X);
var max = _curvePointsQH.Max(x => x.X);
if (value < min || value > max)
return false;
CalcWorkPointByQ(value);
return true;
};
dlg.ShowDialog();
}
private void barBtnSetAxisHValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_curvePointsQH == null || !_curvePointsQH.Any())
return;
var dlg = new AxisValueDlg();
dlg.SetBindingData();
dlg.VerifyValueChanged += (value) =>
{
var min = _curvePointsQH.Min(x => x.Y);
var max = _curvePointsQH.Max(x => x.Y);
if (value < min || value > max)
return false;
CalcWorkPointByH(value);
return true;
};
dlg.ShowDialog();
}
private void barBtnPositioningMaxQ_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
CalcWorkPointByMaxQ();
}
private void barBtnPositioningMaxE_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
CalcWorkPointByMaxE();
}
private void barCekDefinePointVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SetDefinePointVisible(!_definePointVisible);
}
private void barCekLineVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SetLineVisible(this.barCekLineVisible.Checked);
}
private void barCekLegendVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SetLegendVisible(this.barCekLegendVisible.Checked);
}
private void barCekSetAxisNameVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SetAxisNameVisible(this.barCekSetAxisNameVisible.Checked);
}
private void barCekChartDisplay_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SetChartDisplay(this.barCekChartDisplay.Checked);
}
private void barBtnSetChartAxis_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SetChartAxis();
}
private void barBtnSetChartEquation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SetChartEquation();
}
private void barBtnExportXls_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ExportXls();
}
private void barBtnExportImage_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ExportImage();
}
#endregion
///
/// 设置定义点显示
///
public void SetDefinePointVisible(bool visible)
{
_definePointVisible = visible;
_seriesPointQH.Visible = visible;
_seriesPointQE.Visible = visible;
_seriesPointQP.Visible = visible;
}
///
/// 设置工作点显示
///
public void SetLineVisible(bool visible)
{
if (!_initialData)
return;
_lineVisible = visible;
CalcWorkPointByQ();
}
///
/// 设置图例显示
///
public void SetLegendVisible(bool visible)
{
this.chartControl1.Legend.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
}
///
/// 设置轴名称显示
///
public void SetAxisNameVisible(bool visible)
{
_axisXQ.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
_axisYQH.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
_axisYQE.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
_axisYQP.Title.Visibility = visible ? DefaultBoolean.True : DefaultBoolean.False;
}
///
/// 设置图表显示
///
public void SetChartDisplay(bool monoColor)
{
if (monoColor)
{
this.chartControl1.SetChartMonoColorDisplay();
}
else
{
this.chartControl1.SetChartDisplay();
_axisXQ.SetAxisXQDisplay();
_axisYQH.SetAxisYQHDisplay();
_axisYQE.SetSecondaryAxisYQEDisplay();
_axisYQP.SetSecondaryAxisYQPDisplay();
_seriesCurveQH.SetCurveQHDisplay();
_seriesCurveQE.SetCurveQEDisplay();
_seriesCurveQP.SetCurveQPDisplay();
_seriesPointQH.SetPointQHDisplay();
_seriesPointQE.SetPointQEDisplay();
_seriesPointQP.SetPointQPDisplay();
_workPointLine.SetWorkPointLineDisplay();
_workHLine.SetWorkHLineDisplay();
}
}
///
/// 设置坐标轴
///
public void SetChartAxis()
{
var dlg = new ChartCoordinateDlg();
var onlyQH = _curveExpressQE == null && _curveExpressQP == null;
dlg.SetBindingData(_coordinateParas, onlyQH);
dlg.OnChangedCoord += (rhs) =>
{
_coordinateParas = rhs;
CalcChartAxis();
this.OnCurveCoordinateParasChanged?.Invoke(_coordinateParas);
};
dlg.ShowDialog();
}
///
/// 曲线方程
///
public void SetChartEquation()
{
var dlg = new CurveEquationDlg();
dlg.SetBindingData(_curveExpressQH, _curveExpressQE, _curveExpressQP);
dlg.ShowDialog();
}
///
/// 导出Excel
///
public void ExportXls()
{
CurveExpressExportXLS.Export(_curveExpressQH, _curveExpressQE, _curveExpressQP, 12);
}
///
/// 导出图片
///
public void ExportImage()
{
this.chartControl1.ExportPictByDlg();
}
#endregion
}
}