簡體   English   中英

使用繪圖視覺效果在WPF中顯示2D示意圖

[英]Displaying 2D Schematics in WPF with Drawing Visuals

我正在創建一個WPF應用程序,它將顯示城市規模的水管理系統的2D矢量圖形。 我從數百頁的閥門,泵,處理設備等以及將它們互連的管道的示意圖中捕獲了數據。 將其與個人住宅和商業物業的地圖信息結合起來,數據集具有約100,000個節點實例以及互連的管道信息。 我有一個概念驗證應用程序,它為每個管道段或節點(節點非常簡單;矩形,圓形等)創建一個DrawingVisual,創建一個DrawingContext,為管道或節點的圖形表示渲染線段。 DrawingVisuals已添加到畫布。 每種視覺效果都可以進行點擊測試(我需要能夠點擊其中的任意一種以獲得更多詳細信息)。 問題在於,隨着視覺效果的數量超過數千,性能(平移,縮放)會降低(不過直到那時真的很酷!)。 我嘗試擺弄抗鋸齒和位圖緩存,但這並沒有太大幫助。

在WPF中這種事情可能嗎? 有沒有更好的方法? 我來自MFC,雖然6個月前有很多C#經驗,但我只是從6-8月份開始使用WPF。 從這里的閱讀文章中,我可以看到經常提到Direct3D,但是它確實確實適合平面,2D,線描的設計,還是我錯了? 我見過的XNF教​​程只涉及精靈,這似乎很難嗎? 我已經閱讀了與業務圖有關的帖子; 在這些情況下,向下采樣數據似乎是適當的,但是我不確定我能做到這一點,因為每個節點和互連管道都是相關的。 用戶需要在原理圖中的任何點進行合理的快速縮放和平移。 我本以為OpenGL可能是一件好事,但我真的很喜歡WPF的所有功能(命中測試,出色的幾何類等)

有什么建議么?

謝謝!

如果還沒有,請看看WPF性能工具: http : //msdn.microsoft.com/zh-cn/library/aa969767.aspx 您應該能夠了解真正的瓶頸在哪里,每次重新渲染的內容等等。

我不得不處理一些3D模型的WPF縮放問題。 盡管我不太了解2D等效術語,但該建議可能仍然適用。

WPF具有足夠的優勢,可以針對您的用例進行優化,而無需考慮某些替代體系結構。 我認為對我來說,了解和解決性能問題比處理其他框架要少。

最后,對我來說,最大的訣竅是整合模型和視覺效果。 我沒有使用很多小模型,每個小模型都可以進行命中測試,並帶有自己的顏色,等等,我將它們匯總到了代表許多組件的大模型中。 然后,我對大型模型進行命中測試,以進一步優化選擇並確定實際上應“命中”哪個小組件。 從那里開始,我沒有更改整個聚合模型的顏色,而是覆蓋了一個較小的模型來表示選擇。 我想你應該已經明白了...

因此,您需要確定繪圖中的哪個抽象部分無法很好地縮放-可能是DrawingVisuals的數量,或者您使用的其他UIElement,然后嘗試將其合並。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM