Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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#中加速WinForms的显示?_C#_.net_Winforms - Fatal编程技术网

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

如何在C#中加速WinForms的显示?,c#,.net,winforms,C#,.net,Winforms,如何在C#中加速WinForms的显示 我发现窗体的绘制速度非常慢,即使窗口在加载后被“重新激活”(即切换到) 其他语言的渲染形式似乎要快得多 有没有办法加快速度?在VS2005中使用C#。尝试使用backgroundworker在后台加载数据 最后,您可以使用启动屏幕和加载数据来实现一个seemslikefastscreen,显示禁用的屏幕或等待图标,直到恢复它们 尝试使用backgroundworker在后台加载数据 最后,您可以使用启动屏幕和加载数据来实现一个seemslikefastsc

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

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

其他语言的渲染形式似乎要快得多


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

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


最后,您可以使用启动屏幕和加载数据来实现一个seemslikefastscreen,显示禁用的屏幕或等待图标,直到恢复它们

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


最后,您可以使用启动屏幕和加载数据来实现一个seemslikefastscreen,显示禁用的屏幕或等待图标,直到恢复它们

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


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

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


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

从阅读您的一些评论来看,您似乎没有通过覆盖Paint()来敲打UI线程,也没有绘制大型位图。我假设你有很多很多表单控件。我有很多这样的控件,表单似乎在波浪中更新,这无疑扼杀了我的UI响应能力。老实说,除了减少表单数量或切换UI库之外,我还没有找到一个好的解决方案


我要扔掉我的0.02美元,建议你看看WPF。我的表单中有几十个自定义控件,每个控件都包含10个左右的控件,UI简直就是飞起来了。如果你能转换到WPF,你会很高兴你做到了。在这些论坛上,每一步都有很多很好的帮助:D

通过阅读您的一些评论,您似乎没有通过覆盖Paint()来敲打UI线程,也没有绘制大型位图。我假设你有很多很多表单控件。我有很多这样的控件,表单似乎在波浪中更新,这无疑扼杀了我的UI响应能力。老实说,除了减少表单数量或切换UI库之外,我还没有找到一个好的解决方案


我要扔掉我的0.02美元,建议你看看WPF。我的表单中有几十个自定义控件,每个控件都包含10个左右的控件,UI简直就是飞起来了。如果你能转换到WPF,你会很高兴你做到了。在这些论坛上,每一步都有很多帮助:D

你在UI线程上做了很多处理吗?你是在一台内存不足的机器上吗?我发现WinForms通常绘制速度非常快。绘制速度与您的UI代码有关,而与WinForms本身无关。你在你的UI线程上做什么?当它最初加载时,会有一些数据检索,但当应用程序只是通过Windows中的任务栏重新激活时,检索速度也很慢,这表明重新绘制GUI有点慢。@Craig:在
Paint
事件中是否有自定义代码,或者您只是在使用现有控件?您是否尝试过使用探查器来确定性能瓶颈在哪里?我听说在最小化/恢复时会释放/保留内存。您是否在多台机器上试用了应用程序?您是否在UI线程上进行了大量处理?你是在一台内存不足的机器上吗?我发现WinForms通常绘制速度非常快。绘制速度与您的UI代码有关,而与WinForms本身无关。你在你的UI线程上做什么?当它最初加载时,会有一些数据检索,但当应用程序只是通过Windows中的任务栏重新激活时,检索速度也很慢,这表明重新绘制GUI有点慢。@Craig:在
Paint
事件中是否有自定义代码,或者您只是在使用现有控件?您是否尝试过使用探查器来确定性能瓶颈在哪里?我听说在最小化/恢复时会释放/保留内存。您是否在多台机器上试用过您的应用程序?不涉及任何位图,只涉及GUI的绘制。不涉及任何位图,只涉及GUI的绘制。