2010-12-21 84 views
1

我有一個WPF應用程序與許多選項卡.. 在一個選項卡..我做一個非常複雜的矢量繪圖組成的成千上萬的繪圖視覺..(這代表一臺機器和所有元素需要可以交互..) 它需要3/4秒,第一次繪製這個..第一次繪製後應該做..WPF tabswitch /渲染需要太多時間

問題是,如果我切換到另一個選項卡和復出,它需要釋放2,3秒再次顯示帶有繪圖的tabpage。由於沒有重繪,爲什麼它需要這麼多時間..?

+0

有沒有想過如何加快這一點? – 2011-01-05 19:10:26

+0

沒有..從wpf4的bitmapcache是​​不錯..但它不能應用在我們的情況..可能會幫助你.. – Socrates 2011-01-06 09:37:28

回答

0

如果組件不會更改,您可以撥打Freeze()將其標記爲完成。沒有嘗試過,我不知道這是否會有所幫助,但你可以嘗試一下。

並非所有對象都是可凍結的。查看MSDN文檔以獲取更多信息: http://msdn.microsoft.com/en-us/library/ms750509.aspx

另一件你可以嘗試的方法是將矢量圖渲染爲位圖並顯示它。也許這會讓你失去矢量的精確度而感到噁心,但如果你知道它不會改變,它看起來是一樣的,那有什麼危害? (如果你支持打印或東西,這將需要一個高分辨率的版本,你可以隨時切換回該操作)有關如何將的UIElement轉換爲位圖信息,請訪問: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

0

另一種可能的解決方案:你並沒有真正解釋你在做什麼樣的元素互動,但是如果你想要做的只是放大和平移,那麼RenderTransform可能就足夠好了(這比LayoutTransform更有效率和/或將所有元素)。我還沒有玩過Freeze()RenderTransform的組合,但是您可以在減少WPF佈局量的同時獲得所需的縮放比例。