2011-04-14 89 views
4

我目前正在研究一個應用程序,需要顯示大型工程圖紙,可以是8800x6800或更大。要求規定用戶應該能夠平移和縮放圖像。理想情況下,他們也希望能夠對圖像進行註釋。如果您查看Windows照片查看器,您會看到我希望模擬的性能和功能,減去註釋部分。在WPF中高效地顯示和縮放大圖像

到目前爲止,我已經嘗試了幾種不同的方法來顯示圖像,但都沒有提供我期待的性能。要麼他們佔用內存的很多,要麼他們很慢。這些是我採取的方法:

  • ViewboxImage作爲一個孩子。內存使用情況正常,但重新調整Viewbox速度很慢。我還沒有嘗試使用這種方法縮放/平移,因此。
  • InkCanvasImage設置爲背景或作爲孩子。通過這種方法,通過ScaleTransformTranslateTransform縮放/平移似乎馬馬虎虎,但內存使用可能會在450-600 MB的範圍內。

這是我第一次嘗試使用.NET/WPF進行圖像處理,並且我在這方面的知識相當有限。處理大型圖像有什麼最佳做法,特別是WPF?我已經讀過平鋪圖像(如深度縮放)可以提供幫助,但不確定如何做到這一點,或者如果這是我的情況下最好的想法。你知道有哪些資源可以幫助我更好地理解這一點嗎?

+0

您是否最終解決了這個問題? – 2013-04-30 11:01:23

回答

1

通過「平鋪」,如果您的意思是將圖像拆分成單獨的部分並且只顯示一個小子集以提高性能,這將被稱爲「虛擬化」。

微軟有一個關於虛擬化項目的優秀博客,甚至提供了VirtualCanvas的參考實現,您可以使用它作爲虛擬化控件的起點。

鏈接在這裏:http://blogs.msdn.com/b/jgoldb/archive/2008/03/08/performant-virtualized-wpf-canvas.aspx

注意,這個博客包括變焦和規模作爲討論的一部分,以及一個約平滑滾動和最好的用戶界面響應磚先發制人裝載的討論。