您可以嘗試使用GDI +或直接使用x而不是WPF。
我做了一個類似的項目(通過WPF渲染地圖數據),這是我一年前寫的一篇MSDN雜誌的文章。
這只是我寫得相當快(文章+應用程序花了大約1周)的東西,它只是被設計成「這是你可以做的事情」,所以我沒有專注於性能許多。無論如何,我遇到了同樣的問題。一旦畫布上的多邊形數量變大,渲染性能就開始受到影響。例如,調整窗口大小約需1/2秒左右。
很多這一切都與WPF的開銷有關。它主要被設計成一個GUI工具包,而不是一個高性能的圖形引擎。這意味着它專注於高效渲染的功能豐富性。由於對象數量較少(在大多數GUI應用程序中可能會發現的),性能非常好,數據綁定,動畫和聲明式樣特徵(以及所需的所有事件路由和其他事物)可以真正派上用場。
但是,繪製地圖時,數據的龐大體積可能會導致所有這些整齊的數據綁定功能導致性能問題,正如您所知的那樣。
如果你不需要聲明樣式和動畫,那麼我會消除WPF,並使用GDI +繪製你自己的地圖。它基本上包括設置正確的變換矩陣以使地圖繪製到控制表面上,然後遍歷所有多邊形並調用一堆DrawPolygon方法。
要啓用交互功能,您必須編寫自己的測試代碼,並且在窗體大小調整的任何時候您都必須重新繪製地圖。您還必須手動編寫任何動畫或樣式更改或類似您想要執行的操作(例如鼠標懸停在區域上時突出顯示區域)。但是,編寫該代碼不應該那麼困難。我想成像你可以在大約1.5周內完成。
然而,這樣做應該會提高性能,因爲它會降低到只做大約20-30K的向量轉換,這對於大多數現代CPU來說並不需要太多的處理器能力。你也可以考慮使用Direct X,它可以讓你利用GPU,這可以帶來更大的性能提升。
謝謝,不知道它是否會爲工作我因爲我需要部署爲XBAP。 – Dylan 2008-09-29 19:41:32
QT還有一個瀏覽器插件工具 - 如果你在開發人員支持區尋找,你應該可以找到它。您可能想要編輯您的原始帖子以闡明XBAP要求。 – ConcernedOfTunbridgeWells 2008-09-29 19:47:06