Windows 窗体:Auto Scale 应用程序

Windows Forms: Auto Scale Application

提问人:Cleo 提问时间:3/3/2014 更新时间:1/14/2020 访问量:20496

问:

我有一个 WinForms 应用程序,旨在支持全高清分辨率(因此为 1920x1080)。现在这个应用程序也应该在较低的分辨率上运行:1600x900。 有没有办法让应用程序自动缩放以适应较低的分辨率?就像你只是缩小图像一样,基本上是调整每个控件的大小和重新定位。 我当前的表单和面板已将其大小设置为 1900x1080,因此它们只是在较低的分辨率下延伸到屏幕之外。 我玩过 AutoScaleModes 和 AutoSize,但我能得到的最好的是滚动条,这样您至少可以浏览表单。缩小应用程序(保留控件的尺寸/相对大小和位置)之类的事情是否可能?

提前感谢您对此的任何意见!

C# WinForms 调整大小自动 缩放

评论

0赞 huMpty duMpty 3/3/2014
看一看 Form.AutoSize 属性
0赞 Shell 3/3/2014
你是说分辨率独立应用程序吗?
0赞 Cleo 3/3/2014
是的,Resolution Indepent是最好的......
0赞 Shell 3/3/2014
@Cleo 您有两种选择。您可以创建自己的代码以使 Windows 解析独立,也可以使用任何第三方组件(如 DevExpress)。我在回答中附上了一个链接。

答:

1赞 Askolein 3/3/2014 #1

如果您的主窗体以最大化模式启动,它将自动调整其大小。

但是(根据您的问题,这是一个巨大的“但是”):内部控件不会像您在智能手机上看到的那样缩放。WinForm 不像 WPF 那样“基于矢量”。如果您有一个 1920x1080 格式的完全加载的窗体,则当主窗体缩小时,控件将不适合,并且您将获得滚动条。

所以答案是:不。

评论

0赞 Cleo 3/3/2014
因此,如果我使用 WPF 重建应用程序,这个自动缩放问题会消失吗?
0赞 Askolein 3/3/2014
不。WPF 是另一个用于构建 UI 的“工具箱”。您必须重写(并重新考虑)整个应用程序/UI。
0赞 adhie 3/3/2014 #2

您要查找的属性称为 Dock,它是控件的属性。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock(v=vs.110).aspx

这基本上告诉控件如何填充可用空间。

0赞 Shell 3/3/2014 #3

创建与分辨率无关的应用程序不是一个简单的逻辑。窗口中的所有内容都应根据所选分辨率调整大小。不仅控件的大小,您还必须根据更改更改字体大小。下面是如何使用 C# 代码创建与分辨率无关的表单的示例。另一种方法是使用DevExpress工具。此工具提供 Layout Countrol Container。您可以将每个控件放在单独的布局项中,并分配控件的最小和最大大小。

评论

0赞 amalgamate 11/26/2019
死链接“这里”
1赞 Shagul 1/14/2020 #4

解决方案是可用的。

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

和 让所有控制。 根据您的愿望制作合适的尺寸。autosize = false