[英]Drawing a map fast with thousands of lines in WPF
我正在WPF中制作路線規划程序,我需要顯示一個地圖,它是一個有數萬條邊的圖形對象。 如果我還想與這個地圖交互(比如縮放,移動,選擇邊緣),那么繪制這些線條的最佳選擇是什么? 我試過的所有選項都變成了hova,但渲染性能卻很慢。
你可以使用Shape ,與這些對象交互特別簡單,但如果你處理成千上萬的邊緣,我建議使用DrawingVisual類,一個可用於在屏幕上渲染矢量圖形的可視對象,以及它的RenderOpen方法。 我遇到了類似的問題 ,我使用DrawingContext繪制了邊緣,提高了應用程序的性能。
要進行縮放,您必須使用轉換,特別是ScaleTrasnform ,並將轉換應用於面板或形狀。
DrawingVisual不提供事件handlig,因此如果使用Shape,您可以使用事件與邊緣交互,使用DrawingVisual,您需要實現Hit-Testing 。
要提高繪圖性能,您必須避免一次渲染所有線條。 即使使用較低級別的視覺效果,也無法提高性能。
你必須遵循這些事情:
如果必須使用WPF,請查看DrawingVisual類。 這樣可以訪問低級繪圖基元,從而提供更快的性能。 但是,當您處理較低級別的對象時,您必須自己處理焦點和命中測試等事情。 在這里查看DrawingVisuals上的msdn條目:
http://msdn.microsoft.com/en-us/library/system.windows.media.drawingvisual.aspx http://msdn.microsoft.com/en-us/library/ms742254.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.