2012-04-16 131 views
4

我在WPF中製作了一個路徑規劃器程序,我需要顯示一張具有數萬條邊的圖形對象的地圖。如果我也想要與這個地圖交互(如放大,移動,選擇邊緣),那麼繪製這些線條的最佳選擇是什麼?我試過的所有選項都證明了它的渲染性能非常低。在WPF中以數千行快速繪製地圖

回答

3

你可以使用Shape,這些對象的交互特別簡單,但是如果你處理的是上千條邊,我建議使用DrawingVisual類,這個可視對象可以用來在屏幕上呈現矢量圖形,和它的RenderOpen方法。我有一個similar problem給你,我已經提高了我的應用程序的性能,使用DrawingContext繪製我的邊緣。

要放大,您必須使用轉換,尤其是ScaleTrasnform,並將轉換應用於面板或形狀。

DrawingVisual不提供事件handlig,因此如果使用Shape可以使用事件與邊緣進行交互,則使用DrawingVisual需要實現Hit-Testing

+0

謝謝,我想我會用DrawingVisual去。 – 2012-04-17 13:44:52

1

爲了提高繪圖性能,你必須避免同時渲染所有行。即使使用較低級別的視覺效果,您也無法提高您的表現。

你必須遵循這些東西:

  1. 如果您有一層這些線路再拆不同layers.You該層可與高速公路線的基礎上,將它們分割,高速公路,地方道路,街道等
  2. 你必須找到機制來空間索引這些圖層。通過使用空間索引,您可以根據其邊界框爲您的線索引。
  3. 獲取線路邊界框的基礎上,只有上呈現更高的縮放級別,其位於該邊框
  4. 渲染重要線路的線(公路,高速公路),然後逐漸顯示出其他線路(低重要性道路,街道)放大地圖。
+0

感謝您的想法。我會嘗試實現不同的層次。 – 2012-04-17 13:44:16