我对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条记录,我现在可以滚动浏览所有这些空数据点。 我可以在图表上有一定数量的数据点之后显示滚动条,并在每次添加数据时更新它,但也许更容易吗?
我希望你理解我想说的话,我还在努力学习英语。
答案 0 :(得分:1)
如果您可以使用WPF,则http://dynamicdatadisplay.codeplex.com/和旧版WPF http://dynamicdatadisplay.codeplex.com/wikipage?title=D3v1
非常好,我在
之前用它进行了一些非常高速的数据采样