我正在尝试使用Winform和Devexpress库构建遥测软件。具体来说,我正在进行折线图控制,我想要做的是配置图表,以便能够实时显示数据变化。
生成图表时会读取一些外部传感器,这些传感器以每秒10个值的速率发送信息。
这是我初始化图表的代码:
series1 = new Series("test test", ViewType.Line);
chartControl1.Series.Add(series1);
series1.ArgumentScaleType = ScaleType.Numerical;
((LineSeriesView)series1.View).LineMarkerOptions.Kind = MarkerKind.Triangle;
((LineSeriesView)series1.View).LineStyle.DashStyle = DashStyle.Dash;
((XYDiagram)chartControl1.Diagram).EnableAxisXZooming = true;
chartControl1.Legend.Visibility = DefaultBoolean.False;
chartControl1.Titles.Add(new ChartTitle());
chartControl1.Titles[0].Text = "A Line Chart";
chartControl1.Dock = DockStyle.Fill;
这是添加一个新点并删除第一个可用点以使我的图表中的点数始终相同(达到最小点数后)并且不断更新自己显示最后一个点的那个点X秒的值并丢弃旧值。
series1.Points.RemoveRange(0, 1);
series1.Points.Add(new SeriesPoint(time, value));
...
AxisXRange.SetMinMaxValues(newFirstTime, time);
AxisRange如下
Range AxisXRange
{
get
{
SwiftPlotDiagram diagram = chartControl1.Diagram as SwiftPlotDiagram;
if (diagram != null)
return diagram.AxisX.VisualRange;
return null;
}
}
**问题**是这段代码暂时有效。几秒钟后,图表停止工作,并在其上显示一个大红叉。
我的配置是否缺少某些东西? 你知道更好的方法来实现我的任务吗?
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:0)
我认为你做的几乎是正确的。 Devexpress有一个关于RealTime-Charts的Article。他们采用相同的方式,但使用计时器来更新数据。也许这会解决你的绘画问题。