2010-11-25 125 views
3

我正在Windows Vista上使用VS2008开发Windows Forms应用程序。我试图在Windows XP上运行我的应用程序,GUI上的所有内容都搞乱了。我意识到我在Windows Vista上开发了使用120 Dpi设置的应用程序,并将我的XP设置为96 dpi。Visual Studio和DPI问题

我的应用程序有几个UserControls,如果我将DPI更改为96,它们即使在Visual Studio本身中也会缩小。我相信很多人在最近的DPI中使用Visual Studio。那么如何确保我的GUI在Visual Studio和运行时都不会搞砸?

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

回答

0

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

0

这是一个相当古老的问题,但我想分享我的解决方案/意见。最近我遇到了类似的问题。实际上,我希望Visual Studio保留我的WinForms,但它们要在运行时进行缩放。我发现没有一致的总结如何正确地做到这一点。经过一些阅读和试验后,我来到这个解决方案:

  • 保留表格的AutoScaleMode = Font
  • 设置你的窗体设计器:Font = MS Sans; 11px
  • 在窗体构造函数,InitializeComponent后,设置:Font = SystemFonts.DefaultFont
  • 启用DPI意识,无论是通过清单或通过API函数SetProcessDPIAwareness

由于AutoScaleMode遗体主动的,所有DPI改变的魔术作品,甚至是监视DPI的意识。还有一点,就是用一种可以很好地缩放的方式来设计Forms。

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