Windows Forms分辨率问题

4

我在Windows Forms中开发了一个分辨率为1024*780的屏幕,但有些人说在更高的分辨率下它不能很好地适配。是否有任何方法可以解决这个问题?

是否有一种方法可以使Windows Forms应用程序在所有分辨率下看起来都一样?

3个回答

5

我的建议不是让所有屏幕看起来“一样”,而是设计GUI使其更加优雅地缩放。在Winforms中,布局管理器、停靠和锚点是你的好朋友。TableLayoutPanel对这种情况非常有用。分隔符也有帮助...

最后,这是WPF旨在解决的问题之一。WPF广泛使用布局管理器。它感觉更像Java或GTK,而不是Winforms甚至是VB(老派VB)。


0

这就是让你想说“一定有更好的方法”的事情。

我曾经的解决方案是声明一个全局的ScalingFactor变量,它与当前屏幕分辨率相关联。然后,每个可视元素的大小都乘以该因子。

所以,如果我为分辨率A设计了我的表单,而分辨率B比A大1.2倍,窗口A的宽度将是width * 1.2,字体大小将是fontSize * 1.2,文本框尺寸将是dimensions * 1.2。

不好玩。

可能有第三方工具可以购买并执行此缩放。

在您沿着这些道路之前要检查的另一件事是,是否实际上是屏幕分辨率还是dpi设置导致其看起来很糟糕。通常,更高的分辨率只会使其看起来更小,但是非典型的dpi,例如当用户选择“大号字体”时,会造成严重影响。


仅仅通过X因子缩放所有内容并不是正确的解决方案。策略是这样的,表单上有一些控件可能适合缩放,而其他控件则不适合。因此,缩放仅适用于这些控件。 第三方工具,如DevExpress布局控件等,遵循这种策略。 - A G
在没有第三方工具的情况下,就像手动操作一样,当然可以选择性地进行缩放。对于已经设计好的应用程序,例如这个,用户不会从第三方中交换所有不同的控件,因此真正需要的是某种容器控件,它可以将表单中的所有内容包装起来并统一缩放。 - Jay

0
你可以使用item的anchor属性,以及form的autoScaleMode属性将其设置为“None”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接