WinForms应用程序在较大的显示器上运行速度会更慢(即分辨率更高),而其他所有应用程序相同吗?我的直觉是肯定的,因为有更多的房地产需要绘画,但我找不到任何关于效果的信息。
我问,因为我们有一个WinForms应用程序,通常在两台22英寸显示器上运行,但我们有几个用户在两台30英寸显示器上运行它们,并且它们的GUI似乎总是比使用22英寸显示器。
答案 0 :(得分:2)
问题实际上不是英寸数,而是像素数。
绘制到800x600屏幕比绘制到1920x1080屏幕 (工作量减少约4倍) 的工作量少。
尽管如此,大部分工作可能都是通过显卡完成的,并且不会影响CPU负载。
答案 1 :(得分:0)
拥有来自竞争芯片制造商(一个nVidia和一个ATI)的显卡可能会导致速度减慢。
有问题的应用程序也可能是绘制效果不佳,当窗口较小时它不是那么明显,但是当它在较大的显示器上更大时,可怜的绘画代码是一个更大的热点。您可以尝试使用分析器来查看正在发生的事情。 Visual Studio现在内置了一个,或者您可以尝试使用DotTrace http://www.jetbrains.com/profiler/
答案 2 :(得分:0)
对于内置winform控件,差异不会那么大。通常,在任何分辨率下渲染这些控件都非常快。
检查您是否使用自定义绘制控件。在许多情况下,如果油漆方法没有很好地实施,性能会很差。例如,如果绘制像素(宽度和高度的嵌套循环),性能将随着分辨率的增加而显着减慢。
自定义控件的另一个技巧是启用双缓冲,它可以为繁重的绘图程序加速很多事情:
public partial class YourControl : Control
{
public YourControl()
{
InitializeComponent();
this.SetStyle(
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.DoubleBuffer, true);
}