12

我正在与另一位开发人员一起开发 WinForms 应用程序,我们在与自动缩放相关的外观方面遇到了一个大问题。

我的系统(Sony VAIO)在此菜单上默认为 125%:

显示缩放

据我所知,125% 将 DPI 设置为 120,默认字体大小(菜单等)设置为 11pt。在另一个开发者的系统上,他的默认为 100%,即 96 dpi,和 9pt 字体。我不确定,但我认为只有 DPI 才是让我们感到悲伤的原因。

问题表现为文本大小错误,或者覆盖了其他控件,或者间隔太远(取决于最后在设计器中打开它的人)。据我所知,所有ContainerControls 都设置为AutoScaleMode.Inherit,而顶级形式是AutoScaleMode.Dpi. 这是大多数人使用的吗?

4

3 回答 3

5

我的一个应用程序遇到了同样的问题。答案是将其移至 WPF。当我仍然使用 WinForms 时,我提出的解决方案是拥有 2 个可执行文件。一种在 96DPI 下开发,另一种在 120DPI 下开发。这是双重努力,但我尝试了任何布局配置都没有成功。如果我的控件在 96DPI 上看起来不错,那么当切换到 120DPI 时,它们就会超出窗口的应用程序。反之亦然。

WPF 是解决这个烦人问题的唯一方法。

于 2012-07-12T14:00:46.020 回答
0

这可能是表单中组件的锚定问题。例如,如果组件未锚定到所有四个角并且 dpi 更改,则格式可能会受到影响。

当我更改计算机上的 dpi 并打开设计器时,我没有看到任何格式问题......也许更多信息可能会有所帮助。哪些组件相互覆盖?

于 2012-07-05T21:25:18.243 回答
0

最后,我们的解决方案是通过设置来禁用自动缩放AutoScaleMode = AutoScaleMode.None。它需要仔细放置一些东西(并留下比预期更大的间隙),但至少 Auto-Scale 并没有出现并把事情搞砸。

这似乎是一个大问题,因为由于我的屏幕设置较高,甚至 VisualStudio 的某些部分都显示出伪影。

于 2012-11-18T05:51:10.913 回答