如何从SciChart中的XyDataSeries中删除点?

问题描述 投票:1回答:1

我有一个快速的收购显示在一个SciChart和应用程序,应该运行很长一段时间而不消耗PC的所有RAM。

我没有必要在图表上显示所有点,而只是显示某个最近的时间间隔,因此当我不想再显示那些时,我想从系列中删除点。

我尝试了XyDataSeries.RemoveRange方法,但是当我调用它时,我得到以下异常:

System.NotSupportedException: 'Remove is not a supported operation on a Fifo Buffer'

你有什么建议来克服这个问题?

scichart
1个回答
0
投票

解决此问题的唯一方法是不使用FIFO缓冲区并手动使用DataSeries的Insert / Append和Remove函数来维护一定数量的点。

例如

public class Foo
{
    private XyDataSeries<double> _ds = new XyDataSeries<double>();

    private const int FifoCapacity = 1000;

    void AppendPoint(double x, double y)
    {
        using (_ds.SuspendUpdates())
        {
            _ds.Append(x,y);
            if (_ds.Count > FifoCapacity)
            {
                _ds.RemoveAt(0);
            }
        }
    }   
}

现在,您可以在自定义系列上使用Remove,RemoveRange,RemoveAt。

请注意,根据SciChart的WPF Charts Performance Tips and Tricks文档,批量附加/删除远远超过一次一个点。

© www.soinside.com 2019 - 2024. All rights reserved.