3

我正在 Windows Vista 上使用 VS2008 开发 Windows 窗体应用程序。前几天我试图在 Windows XP 上运行我的应用程序,但 GUI 上的一切都搞砸了。我意识到我在 Windows Vista 上使用 120 Dpi 设置开发了应用程序,而我的 XP 设置为 96 dpi。

我的应用程序有几个用户控件,如果我将 DPI 更改为 96,它们甚至在 Visual Studio 本身中都会缩小。我相信现在很多人都在高 DPI 下使用 Visual Studio。那么如何确保我的 GUI 在 Visual Studio 和运行时都不会混乱呢?

编辑:我已经阅读了关于这个问题的几篇文章,我了解到我应该将 AutoScaleMode 设置为 None。但是,这仍然不会阻止我的标签适应操作系统强制执行的新 DPI 设置。我需要一种方法来防止我的标签增长/缩小,因为其他 GUI 元素具有固定大小。

4

2 回答 2

0

自从我处理这个问题以来已经有一段时间了,但尝试设置 AutoSize = False。此外, UseCompatibleTextRendering = True 可能会有所帮助。

于 2011-11-02T05:10:05.563 回答
0

这是一个相当古老的问题,但我想分享我的解决方案/意见。我最近遇到了类似的问题。实际上,我希望 Visual Studio 保持我的 WinForms 原样,但它们可以在运行时扩展。我没有发现关于如何正确做到这一点的一致总结。经过一些阅读和实验后,我得出了这个解决方案:

  • 保留表格的AutoScaleMode = Font.
  • 在表单设计器中设置:Font = MS Sans; 11px
  • 在 Forms Tor 中,在 之后InitializeComponent,设置:Font = SystemFonts.DefaultFont
  • 通过清单或 API 函数启用 DPI 感知SetProcessDPIAwareness

由于 AutoScaleMode 保持活动状态,所有 DPI 更改魔法都会起作用,甚至是每个显示器的 DPI 意识。剩下的就是以一种可以很好地缩放的方式设计表单。

我在我的博客上写了详细信息:http ://www.sgrottel.de/?p=1581&lang=en

于 2016-12-21T10:59:15.387 回答