【问题标题】:Visual Studio and DPI issueVisual Studio 和 DPI 问题
【发布时间】:2011-05-15 19:13:23
【问题描述】:

我正在 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 元素具有固定大小。

【问题讨论】:

    标签: winforms visual-studio user-interface dpi autoscalemode


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      由于 AutoScaleMode 仍然处于活动状态,所有 DPI 更改魔法都会起作用,甚至是每个显示器的 DPI 感知。剩下的就是以一种很好的缩放方式来设计表单。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-09
        相关资源
        最近更新 更多