Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#自定义控件重绘速度慢_C#_Forms - Fatal编程技术网

C#自定义控件重绘速度慢

C#自定义控件重绘速度慢,c#,forms,C#,Forms,我有一个C#Forms程序,总共有大约200个控件。有些在我添加到表单中的用户控件中。当我在我的家用机器上运行我的程序时,它是一台双核AMDx64,2.0Ghz,带有ATI X1600卡,程序运行正常。它很快,重画也不是问题 当我把这个程序放在我的桌面上,一个四核Intel 2.4Ghz、4GB RAM和一个NVidia Gefore 8800GT,它在重画时慢到爬行。这可能是驱动程序问题吗 我为所有用户控件和窗体启用了双缓冲。没有帮助 我读过这篇文章,但我的情况不一样: 问题是“.Suspen

我有一个C#Forms程序,总共有大约200个控件。有些在我添加到表单中的用户控件中。当我在我的家用机器上运行我的程序时,它是一台双核AMDx64,2.0Ghz,带有ATI X1600卡,程序运行正常。它很快,重画也不是问题

当我把这个程序放在我的桌面上,一个四核Intel 2.4Ghz、4GB RAM和一个NVidia Gefore 8800GT,它在重画时慢到爬行。这可能是驱动程序问题吗

我为所有用户控件和窗体启用了双缓冲。没有帮助

我读过这篇文章,但我的情况不一样: 问题是“.SuspendLayout();”并不是真正停止绘图。我记不起那句话了,但我相信你可以在谷歌上找到它。
尝试使用.AddRange可能会有所帮助。

需要注意的是,绘图控件就像在二维曲面上绘制一样,可以根据需要重叠。如果控件不理解矩形剪裁之类的内容,那么它可能会绘制控件中不可见的部分(尤其是隐藏在另一个容器中的控件,如TabPage),从而浪费宝贵的CPU周期。此外,背景色为透明的控件将尝试通过采用其父控件的背景色来模拟透明度。由于所有这些都发生在GDI+上,GDI+不是硬件加速的,因此有许多控件表现出这种行为将加剧减速。

我不得不说,用户控件在设计模式下的重画速度比运行时快。另外,在我的ATD机器上,ATI卡的形式几乎立即显示,而在英伟达机器上,表单需要大约10秒的时间。你确定所有的驱动程序都是最新的吗?这些数字必须是驱动程序的问题。你可以用一个小应用程序来确认10万条线的绘制时间,我经常使用分组框。屏幕上一次大概有30-40个这样的图形,并且有一个相当深层次的子元素从表单中派生出来。实际上,如果说winforms,图形卡应该与它无关,因为GDI+不是硬件加速的,不是吗?