Windows Forms:自动调整应用程序大小

4
我有一个WinForms应用程序,旨在支持全高清分辨率(即1920x1080)。现在,该应用程序还应该在较低的分辨率下运行:1600x900。 有没有办法让应用程序自动缩放以适应较低的分辨率?就像你会缩小图像一样,基本上调整每个控件的大小和位置。 我的当前表单和面板已将其大小设置为1900x1080,所以它们在较低的分辨率下扩展到屏幕之外。 我已经尝试使用AutoScaleModes和AutoSize进行操作,但最好的结果只是出现了滚动条,以便您至少可以浏览表单。是否可能缩小应用程序(保留控件的尺寸/相对大小和位置)? 提前感谢您对此问题的任何输入!

请查看Form.AutoSize Property - huMpty duMpty
你是指分辨率独立应用程序吗? - Shell
是的,分辨率独立最好... - Cleo
@Cleo 你有两个选择。要么自己编写代码使窗口分辨率独立,要么使用第三方组件,比如devexpress。我已经在我的回答中附上了一个链接。 - Shell
4个回答

1
如果您的主表单以最大化模式启动,它会自动调整大小。但是(根据您的问题而言这是一个巨大的“但是”),内部控件不会像在智能手机上看到的那样进行缩放。WinForm不像WPF一样是“矢量基础”的。如果您在1920x1080的完全加载的表单中,当主表单大小调整时,控件将无法适应,您将得到滚动条。因此答案是:不可以。

那么,如果我使用WPF重新构建应用程序,这个自动缩放的问题就会消失吗? - Cleo
不,WPF是另一个用于构建用户界面的“工具箱”。您将不得不重写(并重新思考)整个应用程序/用户界面。 - Askolein

1

解决方案已经可用。

Form.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;

并且将所有控件的 autosize = false。 使其大小适合您的需求。


0

0
创建一个分辨率无关的应用程序并不是一件简单的事情。窗口中的所有内容都应该根据所选分辨率进行调整大小。你不仅需要改变控件的大小,还要根据变化改变字体大小。这里是一个使用C#代码创建分辨率无关表单的示例。另一种方法是使用DevExpress工具。该工具提供了布局控制容器。您可以将每个控件放置在单独的布局项中,并分配控件的最小和最大大小。

失效链接“Here”。 - amalgamate

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