我正在与WinForms应用程序上的另一个开发人员合作,我们遇到与自动缩放相关的外观问题。
我的系统(索尼VAIO)在此菜单上默认为125%:
据我所知,125%将DPI设置为120,默认字体大小(菜单等)设置为11pt。在另一个开发人员的系统上,他的默认值为100%,即96 dpi和9pt字体。我不确定,但我认为只有DPI才会让我们感到悲伤。
问题表现在文本大小错误,要么掩盖其他控件,要么过于分散(取决于最后在设计师中打开过的人)。据我所知,所有ContainerControl
都设置为AutoScaleMode.Inherit
,顶级表单为AutoScaleMode.Dpi
。这是大多数人使用的吗?
答案 0 :(得分:4)
我的一个应用程序遇到了同样的问题。答案是将其转移到WPF。我在使用WinForms时附带的解决方案是拥有2个可执行文件。一个在96DPI下开发,另一个在120DPI下开发。这是双重努力,但我尝试了任何布局配置没有成功。如果我的控件在96DPI上看起来很好,当切换到120DPI时,它们就不在窗口的应用程序中了。反之亦然。
WPF是解决这个烦人问题的唯一方法。
答案 1 :(得分:0)
这可能是您在表单中锚定组件时遇到的问题。例如,如果组件未锚定到所有四个角并且dpi发生更改,则格式可能会受到影响。
当我更改计算机上的dpi并打开设计器时,我没有看到任何格式化问题......也许更多信息可能有所帮助。哪些组件相互覆盖?
答案 2 :(得分:0)
最后,我们的解决方案是通过设置AutoScaleMode = AutoScaleMode.None
来禁用自动缩放。它需要仔细放置一些东西(并留下比预期更大的间隙),但至少自动缩放不会出现并搞砸了。
这似乎是一个很大的问题,因为由于我的屏幕设置较高,甚至部分VisualStudio都会出现伪影。