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

时间:2018-08-28 10:43:31

标签: scichart

我可以快速获取要显示在SciChart和应用程序上的信息,该应用程序可以长时间运行而不会占用PC的所有RAM。

我不必在图形上显示所有点,而只是在最近的某个时间间隔内显示,因此当我不想再显示这些点时,我考虑从序列中删除点。

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

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

您对解决此问题有何建议?

1 个答案:

答案 0 :(得分: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文档,批量添加/删除操作一次执行的效率远远超过一次。