using DevExpress.Utils;
|
using DevExpress.XtraCharts;
|
|
namespace PBS.WinFrmUI.DataAnalysis
|
{
|
/// <summary>
|
/// 泵图表
|
/// </summary>
|
public partial class PumpViewChart : DevExpress.XtraEditors.XtraUserControl
|
{
|
public PumpViewChart()
|
{
|
InitializeComponent();
|
InitialChart();
|
}
|
|
#region Private Variable
|
|
private XYDiagram _diagram;
|
private XYDiagramDefaultPane _default_pane;
|
private XYDiagramPane _bottom_pane;
|
|
private AxisX _axis_x_flow;
|
private AxisY _axis_y_head;
|
private SecondaryAxisY _axis_y_eff;
|
|
|
#endregion
|
|
|
|
#region Private Initial
|
|
/// <summary>
|
/// 初始化图表
|
/// </summary>
|
private void InitialChart()
|
{
|
|
this.chartControl1.RuntimeHitTesting = true;
|
|
|
|
_diagram = (XYDiagram)this.chartControl1.Diagram;
|
_default_pane = _diagram.DefaultPane;
|
_bottom_pane = (XYDiagramPane)_diagram.FindPaneByName("BottomPanel");
|
|
_axis_x_flow = _diagram.AxisX;
|
_axis_y_head = _diagram.AxisY;
|
_axis_y_eff = _diagram.SecondaryAxesY.GetAxisByName("AxisYEff");
|
_axis_y_eff.Alignment = AxisAlignment.Far;
|
|
|
_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;
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
#region Set
|
|
/// <summary>
|
/// 清空图表
|
/// </summary>
|
public void Clear()
|
{
|
this.chartControl1.BeginInit();
|
this.chartControl1.Series.Clear();
|
for (int i = this.chartControl1.AnnotationRepository.Count - 1; i > 0; i--)
|
{
|
if (i == 0)
|
break;
|
this.chartControl1.AnnotationRepository.RemoveAt(i);
|
}
|
this.chartControl1.Legend.CustomItems.Clear();
|
this.chartControl1.EndInit();
|
}
|
|
/// <summary>
|
/// 设置图表
|
/// </summary>
|
public void SetBindingData(List<(List<TimeChartViewModel> PtList,bool IsPressure,string Name)> vm_list)
|
{
|
|
this.chartControl1.BeginInit();
|
this.chartControl1.Series.Clear();
|
for (int i = this.chartControl1.AnnotationRepository.Count - 1; i > 0; i--)
|
{
|
if (i == 0)
|
break;
|
this.chartControl1.AnnotationRepository.RemoveAt(i);
|
}
|
this.chartControl1.Legend.CustomItems.Clear();
|
if (IsInvalidData())
|
{
|
|
this.chartControl1.EndInit();
|
return;
|
}
|
|
AxisXBase axis_x = null;
|
AxisYBase axis_y = null;
|
XYDiagramPaneBase pane = null;
|
|
|
foreach (var vm in vm_list)
|
{
|
if (vm.IsPressure)
|
{
|
axis_x = _axis_x_flow;
|
axis_y = _axis_y_head;
|
pane = _default_pane;
|
}
|
else
|
{
|
axis_x = _axis_x_flow;
|
axis_y = _axis_y_eff;
|
pane = _default_pane;
|
|
}
|
|
|
|
|
|
AddLineSeries(vm.Name, axis_x, axis_y, pane, vm.PtList);
|
}
|
|
|
this.chartControl1.EndInit();
|
|
}
|
|
|
|
//是否是无效数据
|
private bool IsInvalidData()
|
{
|
|
return false;
|
}
|
|
|
#region Add Chart Data
|
|
|
|
private void AddLineSeries(string id, AxisXBase axis_x, AxisYBase axis_y, XYDiagramPaneBase pane, List<TimeChartViewModel> pt_list, DevExpress.XtraCharts.DashStyle dash = DevExpress.XtraCharts.DashStyle.Solid)
|
{
|
if (pt_list == null || !pt_list.Any())
|
return;
|
|
var view = new DevExpress.XtraCharts.LineSeriesView();
|
view.LineStyle.DashStyle = dash;
|
view.LineStyle.LineJoin = System.Drawing.Drawing2D.LineJoin.Round;
|
view.LineStyle.Thickness = 2;
|
if (dash!= DashStyle.Solid)
|
{
|
view.LineStyle.Thickness =3;
|
}
|
|
view.EnableAntialiasing = DefaultBoolean.True;
|
view.MarkerVisibility = DefaultBoolean.False;
|
view.AxisX = axis_x;
|
view.AxisY = axis_y;
|
view.EmptyPointOptions.Color = Color.Transparent;
|
view.Pane = pane;
|
|
var series_pt_list = pt_list.Select(x => new SeriesPoint(x.Time,x.Y)).ToArray();
|
var series = new DevExpress.XtraCharts.Series();
|
series.Tag = id;
|
series.ShowInLegend = false;
|
series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime;
|
series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False;
|
series.CrosshairEnabled = DefaultBoolean.False;
|
series.ToolTipEnabled = DefaultBoolean.False;
|
series.SeriesPointsSorting = SortingMode.None;
|
series.Visible = true;
|
series.View = view;
|
series.Points.AddRange(series_pt_list);
|
|
this.chartControl1.Series.Add(series);
|
}
|
|
#endregion
|
|
#endregion
|
|
|
}
|
}
|