问题描述
我正在尝试将OxyPlot与.NET Core 3.0一起使用以显示具有数千个Lineseries的绘图,并且每个Lineseries都包含数百个点。
由于数据太多,因此我正在尝试SkiaSharp渲染器和SharpDX(https://github.com/oxyplot/oxyplot-sharpdx)。但是,我不确定该选择哪一个,因为oxyplot-sharpdx的开发似乎在几个月前就停滞了,而SkiaSharp还是很新的。
举一些我想要达到的目标的示例,下面是一些代码:
public Mainviewmodel()
{
var model = new PlotModel { Title = "Hello SharpDX from WPF" };
model.Axes.Add(new Linearaxis { Position = AxisPosition.Bottom });
model.Axes.Add(new Linearaxis { Position = AxisPosition.Left,Title="Left Axis Title" });
for (int i = 0; i < 5000; ++i)
{
var lineseries = new Lineseries ();
for (int j = 0; j < 300; ++j)
{
lineseries.Points.Add(new DataPoint(j,j * i % 2));
}
model.Series.Add(lineseries);
}
this.Model = model;
}
public PlotModel Model { get; }
任何帮助都会非常感激。
解决方法
以防万一其他人也面临这个问题。
研究了这一点之后,我决定继续使用SkiaSharp,因为它(至少在我们的测试中显示)比SharpDX快一点。
对于这些测试,我们绘制了5000条线,每条线都有300点。
使用 SkiaSharp 进行3次测量的平均时间为 23.91 秒。同时,使用 SharpDX 的平均时间为 25.8 秒。
在SkiaSharp案中,开发似乎也更加活跃。
这两个事实使我们做出了选择。
我希望这个答案可以帮助其他人。