【问题标题】:Devexpress: how to add points to Chart Control at runtime?Devexpress:如何在运行时向图表控件添加点?
【发布时间】:2017-02-06 00:01:40
【问题描述】:

我正在尝试使用 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;
        }
    }

**问题**是这段代码暂时有效。几秒钟后,图表停止工作,并在其上显示一个大红叉。

我的配置有什么遗漏吗? 你知道有什么更好的方法来完成我的任务吗?

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 在 WinForms 中,如果在绘制控件时引发了未经处理的异常,则控件会显示一个红色十字。在 Visual Studio 中,您可以configure options 以便调试器将始终停止在 unhands 异常处。这将帮助您确定问题的原因。
  • 感谢提示
  • @Uranus 感谢您的提示,我发现了一个问题,但现在我在想:这是实现图表的正确方法吗?你有没有尝试过这样的事情?我认为它在 20 秒的数据后存在一些性能问题。感谢您的帮助

标签: winforms charts devexpress


【解决方案1】:

我认为你这样做几乎是正确的。 Devexpress 有一个关于 RealTime-Charts 的Article。他们以相同的方式执行此操作,但使用计时器来更新数据。也许这会解决你的绘画问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    相关资源
    最近更新 更多