WPF编程,Live Charts使用说明(31)——提高性能

LiveCharts不是图形库,它更像是代数库。

正常情况下一个图表的呈现过程是这样的:库的核心读取视图中画布的大小,在这种情况下为WPF,然后根据数据在图表中,它计算图表中每个系列,轴或图例所需的每个标签的大小和位置以及形状,最后核心对视图说,嘿!您需要在此处绘制一条线,在此处绘制矩形,并在此处也添加标签。

这样,我们就可以根据每个平台使用本机控件,一旦使用WPF,我们就可以使用其本机绘图工具“轻松地”为其他平台创建视图,或者如果该平台不够好,则可以使用任何其他第三者组件来渲染我们的图表。

**我们可以说该库有2个主要过程,分别是 Calculus和Rendering,第一个过程通常非常快,与其他WPF控件一样,遗憾的是,如果使用不正确,则渲染性能很差。**

为了提高性能,有以下几种方法:

1、使用增强库

这个增加库是与该库连接的一组轻量级系列,它允许您的图表具有数百万个点,并保持UI响应。
具体情况可以参考以下链接:geared

2、禁用动画

当您需要更好的性能时,可以轻松关闭动画:

<lvc:CartesianChart DisableAnimations="True" />

3、减少图表中的数值标签

  • 对于版本1.x和更低版本,拥有大数据集时一定不要启用Series.DataLabels,因为它们既难于读取又难以使用 UI。
  • 视觉元素, 截面和 轴的数量应少于25。
  • 尽可能禁用悬停,使用空工具提示并 从图表中删除任何DataClick事件,如果您使用Geared包,则不需要这样做。
<lvc:CatesianChart Hoverable="False" DataTooltip="{x:Null}" />

4、固化笔触资源

确定笔触,填充或PointGeometies不会改变时,请冻结它们。
从0.7.15版本开始,默认情况下,默认的笔触,填充和几何形状被冻结。
详细解释可以参见:笔触冻结

5、避免使用 .Add() 增加子项

在图表中添加一系列值时,请使用.AddRange() 方法。

错误做法:

var cv = new ChartValues<double>();
 
for (var i = 0; i < 1000; i++){
    cv.Add(5);
}

正确做法:

var temporalCv = new double[1000];
 
for (var i = 0; i < 1000; i++){
    temporalCv[i] = 5;
}
 
var cv = new ChartValues<double>();
cv.AddRange(temporalCv);
 
//or you can also
var cv = temporalCv.AsGearedValues();

猜你喜欢

转载自blog.csdn.net/qq_43307934/article/details/105645229