提问人:Cleo 提问时间:3/3/2014 更新时间:1/14/2020 访问量:20496
Windows 窗体:Auto Scale 应用程序
Windows Forms: Auto Scale Application
问:
我有一个 WinForms 应用程序,旨在支持全高清分辨率(因此为 1920x1080)。现在这个应用程序也应该在较低的分辨率上运行:1600x900。 有没有办法让应用程序自动缩放以适应较低的分辨率?就像你只是缩小图像一样,基本上是调整每个控件的大小和重新定位。 我当前的表单和面板已将其大小设置为 1900x1080,因此它们只是在较低的分辨率下延伸到屏幕之外。 我玩过 AutoScaleModes 和 AutoSize,但我能得到的最好的是滚动条,这样您至少可以浏览表单。缩小应用程序(保留控件的尺寸/相对大小和位置)之类的事情是否可能?
提前感谢您对此的任何意见!
答:
如果您的主窗体以最大化模式启动,它将自动调整其大小。
但是(根据您的问题,这是一个巨大的“但是”):内部控件不会像您在智能手机上看到的那样缩放。WinForm 不像 WPF 那样“基于矢量”。如果您有一个 1920x1080 格式的完全加载的窗体,则当主窗体缩小时,控件将不适合,并且您将获得滚动条。
所以答案是:不。
评论
您要查找的属性称为 Dock,它是控件的属性。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock(v=vs.110).aspx
这基本上告诉控件如何填充可用空间。
创建与分辨率无关的应用程序不是一个简单的逻辑。窗口中的所有内容都应根据所选分辨率调整大小。不仅控件的大小,您还必须根据更改更改字体大小。下面是如何使用 C# 代码创建与分辨率无关的表单的示例。另一种方法是使用DevExpress工具。此工具提供 Layout Countrol Container。您可以将每个控件放在单独的布局项中,并分配控件的最小和最大大小。
评论
解决方案是可用的。
Form.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
和
让所有控制。
根据您的愿望制作合适的尺寸。autosize = false
评论