2010-05-27 50 views
2

如何加快在C#中顯示WinForms?如何加快在C#中顯示WinForms?

我發現形式被漆得慢,即使被「激活」窗口已經已經加載後(即切換)。

其他語言似乎是呈現形式更快。

有沒有辦法加快速度?在VS2005中使用C#。

+1

你在UI線程上做了很多處理嗎?你在一臺內存不足的機器上嗎?我發現WinForms通常非常快速地繪製。 – 2010-05-27 16:03:45

+1

繪製速度與你的UI代碼相比,WinForms本身更重要。你在你的UI線程上做什麼? – 2010-05-27 16:05:20

+0

最初加載時會有一些數據檢索,但是當通過Windows中的任務欄簡單地重新激活應用程序時,速度也會變慢,這表明重新繪製GUI時存在某些緩慢的情況。 – CJ7 2010-05-27 16:11:45

回答

0

嘗試使用backgroundworker在後臺加載數據。

在最後你可以使用閃屏和裝載數據呈現禁用屏幕或等待圖標,直到你恢復它們實現seemslikefastscreen。

0

那麼,如果快的圖是超級重要的要求,我會建議使用DirectX的,而不是GDI +。 DirectX速度非常快,因爲它利用了圖形卡中的CPU。

但是,如果你要堅持用GDI +,那麼你可以得到這樣做所有的繪圖中的位圖,然後transfering該位圖到屏幕上一個相當不錯的速度表現。爲此,首先創建一個新的Bitmap對象,其大小與您的客戶區相同。接下來,使用Graphics.FromImage(yourbitmap)獲取位圖的圖形句柄。接下來,使用您從位圖獲得的圖形手柄,像通常那樣進行繪製。最後,使用DrawImage()將您的位圖轉移到您的表單。

+0

不是在談論任何位圖,只是GUI的繪畫。 – CJ7 2010-05-28 00:44:42

0

從閱讀一些您的意見,它看起來像你沒有通過覆蓋paint()方法錘擊UI線程,也吸引着大批的位圖。我假設你有很多很多的表單控件。我已經通過擁有大量這些控件並且表單看起來像波浪一樣更新來殺死我的UI響應,並且說實話,我還沒有找到一個很好的解決方案,而不是減少表單數量或切換UI庫。

我要去把我的$ 0.02USD,並建議你看一看WPF。我有幾十個自定義控件的表單,每個控件包含10個左右的控件,UI簡單易用。如果你完全可以轉換到WPF,你會很高興你做到了。在這些論壇上,每一步都有很大的幫助:D

相關問題