2014-04-11 87 views
6

關於SE的其他問題解決了如何加快嵌套UI控件調整大小,但是 - 如果沒有任何控件,該怎麼辦?每次調整WPF窗口大小時,爲什麼會出現黑色延遲?

當您拖動WPF窗口的邊緣,即使是沒有內容的主窗口,拖動過程中黑條也會短暫閃爍。這將產生一個糟糕feel-一個,我不希望造成客戶:

WPF window being resized

它得到更慢,更重與在它上面的一個完整的UI爲好。當使用頂部或左邊緣調整大小時,這甚至不會看起來有多醜。 Windows窗體 - 即使是我構建的最重的用戶界面 - 從來沒有看起來很糟糕。

可以做些什麼來使WPF窗口調整大小的性能與勝出形式相比?

(我有Windows 7 x64和上三重監控系統AT的Radeon HD 7470.)

+0

我不相信(但我不確定)是否有我們可以實現的真正解決方案。只需打開Microsoft Word/Excel/Outlook並調整應用程序大小,您將遇到與您遇到的幾乎相同的問題。 有些方法可以幫助降低引人注意的程度([在這裏找到](http://wieser-software.blogspot.co.uk/2012/06/wpf-window-rendering-woes.html)),但如果微軟可以'不要在這個問題上得到他們自己的軟件,那麼我認爲我們也無法做到。 –

+0

Word,Excel和Outlook在我的系統上調整得非常好,並且完全沒有黑色。但是,Visual Studio和Blend不會。工具窗口。 – jnm2

+0

我不知道是什麼原因造成的? – jnm2

回答

3

您可以更新您的顯卡,然後再次嘗試,但這不會改變任何東西。原因很簡單。我們都會根據有時根據計算機速度的快慢來看到這一點。有時它運行平穩,因爲我們沒有太多的視覺效果。原因是在重繪過程​​中,此時圖形卡中找不到適當的背景顏色。你的驅動程序很好,不僅僅是因爲你使用Wpf。其他技術在重繪後使用相同的機制。

WPF將做的第一件事是清除將要重繪的髒區域。髒區域的目的是減少發送到GPU流水線輸出合併階段的像素數量。這裏是我們看到黑色的地方。此時窗口本身沒有背景顏色,或者其背景顏色設置爲透明,因此GPU繪製黑色背景。事情在wpf中運行異步,這很好。

要解決這個問題,您可以在窗口中設置一個固定的顏色,例如「White」。然後WPF系統將清理髒區域,但自動填充白色而不是黑色。這通常有幫助。

匹配窗口顏色或最頂層的顏色。不要讓GPU使用黑色,你應該做的很好。順便說一句Wpf比WinForm快,所以不用擔心。

相關問題