2016-03-02 84 views
1

我正在为Windows 10 Mobile开发一个应用程序,并且需要在该应用程序中绘制图表,我正在使用WinRTXamlToolkit进行UWP操作。Windows UWP:WinRTXamlToolkit.Controls.DataVisualization图表渲染缓慢

总的来说,所有的图表在样式设计,填充数据等方面都很不错,但是我遇到的一个主要问题是,图表的渲染需要+15秒,这相当阻塞了流畅的用户经验...

该图表获取512个值,有两个系列(areaseries + lineseries)和一些自定义样式通过xaml(图表本身是在C#中创建的)。 任何可能的方式来加快它?

感谢

+0

做了一些进一步的测试: 生成两个chartseries incl。用数据填充它们,设置样式等几乎立即完成。 因此,实际的阻塞过程是将完全准备好的图表实际添加到UI(ChartPanel.Child = chart',其中ChartPanel是一个空的StackPanel) 任何想法? –

+0

简短更新:在此期间,我尝试尽可能多地通过xaml创建图表,并且我只通过C#+来完成我需要的数学运算,并将这些值添加到图表中: 'ElevationChart。高度=的ActualHeight/2.5;'' = ElevationAreaSeries.ItemsSource eleChart.Items;'' = ElevationAreaSeries.DependentRangeAxis eleChart.DependentRangeAxis;'' = ElevationAreaSeries.IndependentAxis eleChart.IndependentAxis;'但图表的装载/再现仍然是像以前一样缓慢。没有人知道吗? –

回答

1

这是可能的Chart控制可以调整到运行速度更快,但512是相当多的数据点,所以它可能是困难的。

我会建议4步骤方法

  1. 确保当你建立与.NET本地编译释放配置的问题依然存在。
  2. 使用探查器进行一些性能分析,找出是否有可以改进的代码。
  3. 考虑减少数据点的数量。在手机屏幕上显示的512个值不太可能重要,你可以将它降低到10-50点。
  4. 尝试一些其他图表控件或更好的 - 实现自己的图表控件与Direct2D绘制(使用SharpDX或Win2D,以避免切换到C++)。您应该能够在几天的工作中获得实时性能。我有一个示例应用程序使用Win2D来呈现实时图表更新here
+0

谢谢你的帮助。 另一个问题:是否有可能做到这一点在后台屏蔽东西?我的问题并不是直接加载所需的时间,而是它阻塞了ui线程,因此应用程序冻结了几秒钟。 –

+0

我怀疑这是因为在创建UI元素时发生问题。 –

+0

嗨。我有/完全相同的问题:使用这个工具包渲染图表的速度慢(大约400个数据点,大约需要7-8秒)。不过,我只注意到2016年3月在这里发布了一个新的nuget包,它已经发布了winrtxamltoolkit(两年来第一次更新!)。新版本的性能似乎更好!所以请尝试更新你的软件包,如果你还没有这样做:) – Jens