Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms Visual Studio与DPI问题_Winforms_Visual Studio_User Interface_Dpi_Autoscalemode - Fatal编程技术网

Winforms Visual Studio与DPI问题

Winforms Visual Studio与DPI问题,winforms,visual-studio,user-interface,dpi,autoscalemode,Winforms,Visual Studio,User Interface,Dpi,Autoscalemode,我正在Windows Vista上使用VS2008开发Windows窗体应用程序。前几天我试图在WindowsXP上运行我的应用程序,但GUI上的一切都搞砸了。我意识到我在Windows Vista上使用120 Dpi的设置开发应用程序,我的XP设置为96 Dpi 我的应用程序有几个用户控件,如果我将DPI更改为96,即使在visualstudio中,它们也会收缩。我相信现在很多人都在高dpi中使用visualstudio。那么,如何确保我的GUI在VisualStudio和运行时都不会出错呢

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

我的应用程序有几个用户控件,如果我将DPI更改为96,即使在visualstudio中,它们也会收缩。我相信现在很多人都在高dpi中使用visualstudio。那么,如何确保我的GUI在VisualStudio和运行时都不会出错呢


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

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

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

  • 保持表单的
    AutoScaleMode=Font
  • 在窗体设计器中设置:
    Font=MS Sans;11px
  • 在Forms Ctor中,在初始化组件后设置:
    Font=systemfont.DefaultFont
  • 通过清单或API函数启用DPI感知
由于AutoScaleMode保持激活状态,因此所有DPI更改魔术都会起作用,即使每个监视器的DPI感知也是如此。剩下的就是以一种缩放效果良好的方式设计表单

我在我的博客上写下了详细信息: