2010-09-17 90 views
3

我有一個C#Forms程序總計約200個控件。有些屬於我添加到表單中的用戶控件。當我在我的家用機器上運行我的程序時,雙核心AMD X64,2.0Ghz與ATI X1600卡,程序運行良好。速度很快,重繪不成問題。C#自定義控件重繪慢

當我將這個程序放到我的臺式機上,一個四核英特爾2.4Ghz,4GB RAM和一個NVidia Gefore 8800GT時,它在重繪時放慢了抓取速度。這可能是一個驅動程序問題嗎?

我對所有用戶控件和表單都啓用了雙緩衝。沒有幫助。

我已閱讀本線程,但我的情況是不一樣的: Super slow C# custom control

+0

我不得不說,用戶控件在設計模式下比在運行時有更快的重繪。另外,在配備ATI顯卡的AMD機器上,表單幾乎是即刻顯示,而在NVidia機器上,表格大約需要10秒才能繪製。 – MarkP 2010-09-17 20:47:39

+1

你確定所有的驅動程序都是最新的嗎? – asawyer 2010-09-17 21:09:45

+0

這些數字必須是驅動程序問題。你可以用一個小的應用程序來確認100000行的繪圖。 – 2010-09-17 21:10:35

回答

0

事情是 「.SuspendLayout();」並不是真的停止繪圖。我不記得聲明,但我相信你可以在谷歌上得到它。 並嘗試使用.AddRange可能會有所幫助。

0

重要的是要注意,繪圖控件就像在2D表面上繪畫,根據需要重疊。如果控件不理解像矩形裁剪之類的東西,它可能會畫出一部分不可見的控件(特別是隱藏在另一個容器中的控件,如TabPage),浪費寶貴的CPU週期。此外,其透明色的控件將嘗試通過採用其父控件的BackColor來模仿透明度。由於所有這些都是在GDI +上發生的,而GDI +並不是硬件加速的,因此有許多控制會表現出這種行爲會加劇速度的下降。