C# WPF图的慢速绘制

C# WPF图的慢速绘制,c#,wpf,charts,C#,Wpf,Charts,我正在使用WPF工具箱中的WPF图表 我正在.csv文件中加载性能计数器数据。如果文件大小超过>200KB或超过50个性能计数器,则WPF渲染图表的时间过长 任何提高WPF图表渲染速度的建议,您都可以在本文中找到一些帮助: 缓存所有内容。画笔、颜色、几何图形、格式化文本、字形。(例如,我们有两个类:RenderTools和TextCache。每个单元的呈现过程都指向这两个类的共享实例。因此,如果两个图表具有相同的文本,它的准备只执行一次。) 如果您计划长期使用,请使用Freezable。尤其是

我正在使用WPF工具箱中的WPF图表

我正在.csv文件中加载性能计数器数据。如果文件大小超过>200KB或超过50个性能计数器,则WPF渲染图表的时间过长


任何提高WPF图表渲染速度的建议,您都可以在本文中找到一些帮助:

  • 缓存所有内容。画笔、颜色、几何图形、格式化文本、字形。(例如,我们有两个类:RenderTools和TextCache。每个单元的呈现过程都指向这两个类的共享实例。因此,如果两个图表具有相同的文本,它的准备只执行一次。)
  • 如果您计划长期使用,请使用Freezable。尤其是几何图形。复杂的未冻结几何体执行HitTest的速度非常慢
  • 选择渲染每个基本体的最快方式。例如,大约有6种文本呈现方式,但最快的是DrawingContext.DrawGlyphs
  • 使用探查器发现热点。例如,在我们的项目中,我们缓存了几何图形,并根据需要提供适当的几何图形。似乎没有任何改进是可能的。但有一天我们想,如果我们一次性渲染几何图形并缓存就绪的视觉效果会怎么样?在我们的情况下,这种做法是可以接受的。我们单位的图表只有几个状态。当图表的数据发生变化时,我们为每个状态重建DrawingVisual并将其放入缓存

此外,该工具包是开源的,下载源代码并提高控件本身的性能可能是值得的。

您可能会在本文中找到一些帮助:

  • 缓存所有内容。画笔、颜色、几何图形、格式化文本、字形。(例如,我们有两个类:RenderTools和TextCache。每个单元的呈现过程都指向这两个类的共享实例。因此,如果两个图表具有相同的文本,它的准备只执行一次。)
  • 如果您计划长期使用,请使用Freezable。尤其是几何图形。复杂的未冻结几何体执行HitTest的速度非常慢
  • 选择渲染每个基本体的最快方式。例如,大约有6种文本呈现方式,但最快的是DrawingContext.DrawGlyphs
  • 使用探查器发现热点。例如,在我们的项目中,我们缓存了几何图形,并根据需要提供适当的几何图形。似乎没有任何改进是可能的。但有一天我们想,如果我们一次性渲染几何图形并缓存就绪的视觉效果会怎么样?在我们的情况下,这种做法是可以接受的。我们单位的图表只有几个状态。当图表的数据发生变化时,我们为每个状态重建DrawingVisual并将其放入缓存

此外,工具包是开源的,下载源代码并提高控件本身的性能可能是值得的。

不幸的是,当样本数较高时,WPF工具包图表控件的性能不佳。我认为没有任何方法可以显著提高it性能。通常,当您关闭不必要的(如果您不需要)功能(如工具提示)时,它的性能会稍好一些。还有一些建议。但不要期望有显著的改进。

不幸的是,当样本数较高时,WPF Toolkit图表控件的性能不佳。我认为没有任何方法可以显著提高it性能。通常,当您关闭不必要的(如果您不需要)功能(如工具提示)时,它的性能会稍好一些。还有一些建议。但是不要期望有显著的改进。

您可能应该使用其他一些图表库,因为WPF工具包图表维护得不是很好


一个包含许多图表类型的免费替代方案是。但是也有许多其他免费和付费的库。

您可能应该使用其他一些图表库,因为WPF工具包图表维护得不是很好


一个包含许多图表类型的免费替代方案是。但是也有许多其他免费和付费的图书馆。

要提高WPF工具包图表的性能,您实在无能为力。唯一真正的替代方法是使用OxyPlot(稍微快一点)或商业图表控件(可以快很多)

查看这些比较多个WPF图表性能的链接:


要提高WPF工具包图表的性能,实际上没有什么可以做的。唯一真正的替代方法是使用OxyPlot(稍微快一点)或商业图表控件(可以快很多)

查看这些比较多个WPF图表性能的链接:


我也在使用Oxyplot,可以推荐它。这真的很方便,研究速度也很快。小eval下载见演示123,它反复绘制了1200万个点。这也是一个不错的选择,实际上我启动它是因为oxyplot不是我想要的,因为我也在使用oxyplot,可以推荐它。这真的很方便,研究速度也很快。小eval下载见演示123,它反复绘制了1200万个点。这也是一个不错的选择,实际上我启动它是因为oxyplot不是我想要的