Visual Studio和DPI问题

时间:2010-11-25 16:05:15

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

我正在Windows Vista上使用VS2008开发Windows窗体应用程序。我试图在Windows XP上运行我的应用程序,GUI上的所有内容都搞砸了。我意识到我在Windows Vista上使用120 Dpi设置开发了应用程序,我的XP设置为96 dpi。

我的应用程序有几个UserControl,如果我将DPI更改为96,所有这些都会在Visual Studio本身中缩小。我相信很多人现在在高DPI中使用Visual Studio。那么如何确保我的GUI在Visual Studio和运行时都不会搞砸?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是一个相当古老的问题,但我想分享我的解决方案/意见。我最近遇到了类似的问题。实际上,我希望Visual Studio保持我的WinForms不变,但是它们要在运行时进行扩展。我没有找到关于如何正确执行此操作的一致摘要。经过一些阅读和实验,我找到了这个解决方案:

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

由于AutoScaleMode保持活动状态,所有DPI更改魔法都可以工作,甚至可以监视每个DPI的DPI感知。剩下的就是以一种很好的方式设计表单。

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