EasyChartX是基于微软MSChart控件实现的自定义控件,该控件是EasyChart的升级版本。EasyChartX中加入了测试测量很多常用的特性、尽量简化了对外接口、提高了绘图效率,同时新增分区视图,可以将每条线独立显示到不同的绘图区中。EasyChartX的属性、事件和方法如下表所示:

属性

 

属性名称(类型)

功能描述

 

LegendVisible(bool)

设定是否在Chart中显示图例,默认为True

 

BackColor(Color)

设定EasyChartX外框颜色

 

ChartAreaBackColor(Color)

设定EasyChartX绘图区颜色,该配置同时生效于两种视图

 

ForeColor(Color)

坐标轴Label和名称的字体颜色

 

Font(Font)

坐标轴Label的字体

 

LegendBackColor(Color)

图例的背景色

 

LegendFont(Font)

图例的字体

 

LegendForeColor(Color)

图例的文字颜色

 

SeriesCount(int)

配置未绘图时显示的线条个数、获取当前绘图中的线条个数。

 

GradientStyle(ChartGradientStyle)

背景色渐变类型

 

SplitView(bool)

是否分区视图显示,默认为false

 

Miscellaneous

(MiscellaneousConfiguration)

杂项配置

 

 

MarkerSize(int)

Marker的大小,取值范围[3-21]

 

 

ShowFunctionMenu(bool)

配置在Chart上右键点击,是否显示功能菜单

 

 

MaxSeriesCount(int)

最大线条个数,默认32,超过该值的数据在Chart不显示

 

 

MaxSeriesPointCount(int)

单个线条上最多显示的点数,默认4000,增大该值会提升数据显示的细腻程度,但是会降低性能。

 

 

CheckNaN(bool)

是否校验数据中的NaN数据。如果不检查则Nan显示为空点;如果检查则NaN替换为1.5E-200并显示为空点。

 

 

CheckNegtiveOrZero

是否校验非正数。如果不检查Nan,则非正数替换为空点;如果检查Nan,则非正数替换为1E2001E-200

 

 

CheckInfinity

是否校验Inf数据。如果不检查Nan,则Inf替换为空点;如果检查NanInf替换为1E200-1E200/1E-200

 

 

Fitting(EasyChartX.FitType)

筛点拟合算法选择。大数据时使用None可改善绘图速度,但是可能会导致数据趋势的显示错误。

 

 

SplitLayoutDirection

(LayoutDirection)

分区视图的布局方向:从左到右或者从上到下

 

 

SplitViewAutoLayout(bool)

配置分区视图是否自动布局,默认为true。配置为falseDirectionChartCount会生效。

 

 

DirectionChartCount(int)

布局方向的绘图区个数(SplitLayoutDirectionLeftToRight时为一行的绘图区个数,TopToDown时为一列的绘图区个数),该属性在SplitViewAutoLayoutFalse时生效

 

 

SplitLayoutColumnInterval(int)

分区视图每列绘图区之间的像素间隔,可以为负值

 

 

SplitLayoutRowInterval(int)

分区视图每行绘图区之间的像素间隔,可以为负值

 

LineSeries(设计时属性名)

Series(开发时属性名)

(EasyChartXSeriesCollection)

设定每个线条的属性。该属性的配置个数可以超过当前线条数。新增线条按照对应索引进行配置。

 

 

Name(string)

设定线条名称,该名称会被显示到图例中

 

 

Color(Color)

线条颜色

 

 

Visible(bool)

线条是否可见

 

 

Width(LineWidth)

线宽

 

 

XPlotAxis(PlotAxis)

使用哪个X轴,当前版本只可以使用主X轴。

 

 

YPlotAxis(PlotAxis)

使用哪个Y轴,可以选择主Y轴和副Y

 

 

Type(LineType)

线条类型

 

 

Marker(MarkerType)

点标记类型。只有在TypeLine时生效

 

SplitPlotArea

(EasyChartXPlotAreaCollection)

配置和获取分区视图时各个绘图区的属性

 

 

BackColor(Color)

绘图区背景色

 

 

AxisX(EasyChartXAxis)

X坐标轴

 

 

AxisX2(EasyChartXAxis)

X坐标轴

 

 

AxisY(EasyChartXAxis)

Y坐标轴

 

 

AxisY2(EasyChartXAxis)

Y坐标轴

 

 

XCursor(EasyChartXCursor)

X轴游标

 

 

YCursor(EasyChartXCursor)

Y轴游标

 

Axes(EasyChartXAxis[])

AxisX(EasyChartXAxis)

AxisX2(EasyChartXAxis)

AxisY(EasyChartXAxis)

AxisY2(EasyChartXAxis)

坐标轴配置,可以配置X轴、副X轴、Y轴、副Y轴的相关属性。该配置同时生效于两种视图。

 

 

Name(string)

获取坐标轴名称

 

 

Color(Color)

配置坐标轴颜色

 

 

Title(string)

配置坐标轴标题

 

 

TitleOrientation

(AxisTextOrientation)

配置坐标轴标题显示方向

 

 

TitlePosition

(AxisTextPosition)

配置坐标轴标题显示位置

 

 

LabelEnabled(bool)

配置是否显示坐标轴的值

 

 

LabelFormat(string)

配置坐标轴下方标签的格式

 

 

MajorGridEnabled(bool)

主网格使能

 

 

MajorGridColor(Color)

主网格颜色

 

 

MajorGridType(GridType)

主网格线条类型

 

 

MinorGridEnabled(bool)

副网格使能

 

 

MinorGridColor(Color)

副网格颜色

 

 

MinorGridType(GridType)

副网格线条类型

 

 

TickWidth(double)

配置坐标轴上标记线的宽度和Chart/宽的比值

 

 

AutoScale(bool)

坐标轴范围是否自动配置

 

 

Maximum(double)

获取当前坐标轴最大值。未绘图时配置坐标轴最大值;绘图时且AutoScalefalse,可以配置坐标轴最大值。

 

 

Minimum(double)

获取当前坐标轴最小值。未绘图时配置坐标轴最小值;绘图时且AutoScalefalse,可以配置坐标轴最小值。

 

 

IsZoomed(bool)

获取当前坐标轴是否处于缩放状态

 

 

AutoZoomReset(bool)

配置每次绘图时是否取消缩放。

 

 

InitWithScaleView(bool)

配置绘图开始时是否默认使用缩放视图。

 

 

ViewMaximum(double)

获取当前坐标轴缩放视图最大值,InitWithScaleViewtrue时配置开始绘图时坐标轴缩放视图最大值

 

 

ViewMinimum(double)

获取当前坐标轴缩放视图最小值,InitWithScaleViewtrue时配置开始绘图时坐标轴缩放视图最小值

 

 

IsLogarithmic(bool)

当前坐标轴是否使用指数显示

 

 

Zoom(double max, double min)

将当前坐标轴缩放到两个数值的范围内

 

 

ZoomReset(int resetTimes)

回退坐标轴缩放操作

 

Cursors(EasyChartXCursor[])

XCursor(EasyChartXCursor)

YCursor(EasyChartXCursor)

游标配置,可以配置X游标、Y游标的相关属性。该配置同时生效于两种视图。

 

 

Name(string)

获取游标名称

 

 

Mode(CursorMode)

游标类型,包括非使能、游标和区域选择

 

 

Color(Color)

游标颜色

 

 

SelectionColor(Color)

游标区域选择时选择区的颜色

 

 

AutoInterval(bool)

是否自动配置选择间隔

 

 

Interval(double)

AutoInterval时配置游标选择间隔

 

 

Value(double)

游标模式时获取游标当前所在的位置

 

TabCursors(TabCursorCollection)

标签游标的集合

 

 

CursorValueFormat(string)

鼠标在标签游标上时,显示数值的格式

 

 

void Add(TabCursor item)

添加标签游标

 

 

void Clear()

清空标签游标

 

 

TabCursor(TabCursors中的元素)

标签游标类

 

 

TabCursor.Color(Color)

游标颜色

 

 

SeriesIndex(int)

TabCursor绑定到的曲线的索引号,小于0为未绑定。

 

 

TabCursor.Value(double)

游标当前对齐到的X轴的值

 

 

TabCursor.YValue(double)

游标对齐的X轴对应曲线的Y值。只有SeriesIndex有效时可用

 

 

TabCursor.Name(string)

游标名称

 

 

TabCursor.Enabled(bool)

是否显示游标

 

自定义事件

 

AxisViewChanged

坐标轴范围变化时触发该事件

 

 

EasyChartXViewEventArgs

事件参数:

Axis:触发事件的坐标轴

ParentChart:触发事件的EasyChartX实例

IsScaleViewChanged:是否是缩放视图变更触发的事件

IsRaisedByMouseEvent:是否是鼠标操作触发的事件

 

CursorPositionChanged

用户使用游标选择对齐到某条线后触发该事件

 

 

EasyChartXCursorEventArgs

事件参数:

Cursor:触发事件的游标

ParentChart:触发事件的EasyChartX实例

SeriesIndex:触发Cursor事件的线条索引

IsRaisedByMouseEvent:是否鼠标操作触发

 

TabCursorChanged

TabCursor被操作或移动后触发该事件

 

 

TabCursorEventArgs

事件参数:

Cursor:触发该事件的TabCursor

ParentChart:触发该事件的EasyChartX

Operation:事件触发操作类型:值被修改、添加Cursor、删除Cursor

ParentChartAreTabCursor所在的绘图区对象

 

BeforePlot

绘图区绘制曲线前触发该事件

 

 

EasyChartXPlotEventArgs

事件参数:

IsClear:该事件是否由Clear触发

ParentChart:触发该事件的EasyChartX句柄

 

AfterPlot

绘图区绘制曲线后触发该事件

 

 

EasyChartXPlotEventArgs

IsClear:该事件是否由Clear触发

ParentChart:触发该事件的EasyChartX句柄

 

方法

 

Plot<TDataType>(…)

显示单通道或多通道连续波形、单通道或多通道离散波形。该方法二维数组的重载包含majorOrder(MajorOrder)的入参,用以配置按行绘图还是按列绘图

Plot方法的泛型重载支持:double/float/int/uint/short/ ushort/byte数据。

 

AddDataMarker(…)

在当前绘图中添加数据标记,这些标记在下次Plot或者Clear时会被清空。单次绘图可以多次添加Marker

 

SaveAsCsv(string filePath)

保存当前图中的数据到Csv文件,有路径入参和无参两个重载

 

SaveAsImage(string filePath)

保存当前图表到png文件,有路径入参和无参两个重载

 

ZoomReset(double min, double max)

停止所有坐标轴的缩放

 

Clear()

清除当前的所有绘图

 

Windows窗体上放置EasyChartX控件后,可以选中该EasyChartX控件后在属性表格中对上述属性进行设置。EasyChartX支持单通道或多通道的连续或离散波形显示,波形的数值范围应该在[-2.5E28, 2.5E28],超出该范围会导致Chart抛出运行时异常。此处的连续波形是指波形上任意相邻的两个点在X轴上均有相同的间隔,通常用于时域采样波形或频谱显示,在调用Plot方法显示连续波形时,除了输入波形数据,还可设定X轴上的起始位置和间隔;而离散波形是指波形上的任意一个点,都由独立的一对xy来确定其在Chart上的位置,在调用Plot方法显示离散波形时,必须输出等长的两个数组,一一对应为各点在Chart上的位置。详细使用方法参照EasyChartX的例程,下图是一组正弦信号在EasyChartX两种模式的绘图效果。使用方法参见范例SeeSharpExamples/ EasyChartX Example