如何加快C#中WinForms的显示速度?

时间:2010-05-27 15:59:50

标签: c# .net winforms

如何加速在C#中显示WinForms?

我发现表格的绘制速度非常慢,即使窗口在已经加载后被“重新激活”(即切换到)。

其他语言似乎渲染形式更快。<​​/ p>

有没有办法加快速度?在VS2005中使用C#。

3 个答案:

答案 0 :(得分:0)

尝试使用backgroundworker在后台加载数据。

最后,您可以使用启动画面和加载显示禁用屏幕的数据或等待图标来实现一个似乎相似的快速屏幕,直到您恢复它们为止。

答案 1 :(得分:0)

如果快速绘图是一个非常重要的要求,我建议使用DirectX而不是GDI +。 DirectX非常快,因为它利用了显卡中的CPU。

但是,如果你想坚持使用GDI +,那么你可以通过在位图中完成所有绘图然后将该位图传输到屏幕来获得相当好的速度性能。为此,首先创建一个与客户区域大小相同的新Bitmap对象。接下来,使用Graphics.FromImage(yourbitmap)获取位图的图形句柄。接下来,使用您从位图获得的图形句柄,像平常一样绘制您的绘图。最后,使用DrawImage()将您的位图传输到表单。

答案 2 :(得分:0)

从阅读你的一些评论看起来你似乎没有通过覆盖Paint()来绘制UI线程,也没有绘制大的位图。我假设你有很多很多表单控件。我肯定通过拥有大量的这些控件来杀死我的UI响应,并且表单似乎在波动中更新,说实话我没有找到一个很好的解决方案,只能减少表单数量或切换UI库。

我要扔掉0.02美元,并建议你看看WPF。我有几十个自定义控件的表单,每个自定义控件包含10个左右的控件,而UI只是过得很快。如果你完全能够过渡到WPF,你会很高兴你做到了。在这些论坛的每一步都有很多很棒的帮助:D