【问题标题】:Windows Forms: Auto Scale ApplicationWindows 窗体:自动缩放应用程序
【发布时间】:2014-03-03 10:42:17
【问题描述】:

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

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

【问题讨论】:

  • 你的意思是分辨率独立应用程序吗?
  • 是的,独立分辨率最好...
  • @Cleo 你有两个选择。要么创建自己的代码以使 Windows 分辨率独立,要么使用任何第三方组件,如 devexpress。我在答案中附上了一个链接。

标签: c# winforms autosize autoscaling


【解决方案1】:

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

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

所以答案是:没有。

【讨论】:

  • 那么如果我使用 WPF 重建应用程序,这个自动缩放问题就会消失?
  • 没有。 WPF 是另一个构建 UI 的“工具箱”。您将不得不重写(并重新考虑)您的整个应用程序/UI。
【解决方案2】:

解决方案可用。

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 死链接“这里”
      最近更新 更多