0

我对 C# 中 .NET 中的图表有一些疑问,我目前正在开发一个应用程序,该应用程序将实时显示来自串行端口的数据。

我正在使用带有样条系列的 .NET 工具箱中的简单图表,我想要实现两个主要功能。

第一个 - 我希望即将到来的数据点显示在图表的右侧,并且我希望它们在新数据到来时向左移动,我不知道如何正确描述它,我希望你能得到主要的想法,因为我还不能发布图片。

我通过每次刷新图表时重新加载所有数据点来实现这种行为,起初它们都是空的,随着数据的到来,我将越来越大的值队列放在最后。

为了澄清代码可能是这样的:

chartAccelerationX.Series["XSeries"].Points.Clear();
dataPointTable = dataPointQueue.ToArray();
for (int i = 0; i < 1000; i++)
{
   DataPoint dataPointX = new DataPoint();

   if (1000 - dataPointTable.Length < i)
   {
      dataPointX.SetValueXY(i + 1, dataPointTable[i - 1000 + dataPointTable.Length].x);
    }
    else
    {
       dataPointX.IsEmpty = true;
    }
    chartAccelerationX.Series["XSeries"].Points.Add(dataPointX);
}
chartAccelerationX.Update();

它工作得很好,但正如我所说,我每次更新图表时都会创建所有 1000 个数据点(我每 100 毫秒执行一次),因此在性能方面可能是灾难性的(我需要大约 6总共 -8 个图表)并且它受到确切数量的 od 数据点的限制(此处为 1000 个)。

难道没有更简单的方法可以通过动态增加数据点的数量和我想要的第二个功能来实现类似的事情 - 一个自动匹配滚动条,例如一次只显示 50 条记录?

我也一直在使用滚动条,但它只是设置为显示 1000 条记录中的 50 条记录,我现在可以滚动浏览所有这些空数据点。我可以在图表上出现确切数量的数据点后显示滚动条,并在每次添加数据时更新它,但也许有更简单的方法?

我希望你明白我想说什么,我还在努力学习我的英语。

4

1 回答 1

1

如果你可以使用 WPF,有http://dynamicdatadisplay.codeplex.com/ 和旧的 WPF 版本http://dynamicdatadisplay.codeplex.com/wikipage?title=D3v1

非常好,我以前用它来进行一些相当高速的数据采样

于 2013-06-10T00:18:00.080 回答