2016-03-02 140 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