如何使WinForms应用程序完全忽略任何类型的DPI设置?

时间:2015-12-07 13:45:01

标签: vb.net windows winforms dpi

我使用VB .NET编写的WinForms应用程序在非默认DPI设置上“爆炸”。此应用程序使用一些不适用于缩放的ActiveX控件。

我很恳请你不要建议我改写它,把它转移到WPF和这种建议。我完全清楚这个应用程序很糟糕,非常糟糕。我的工作就是让它“工作”。

有没有办法让应用程序完全忽略任何DPI设置?任何解决方案都是好的,只要它有效。

3 个答案:

答案 0 :(得分:0)

尝试将AutoScaleMode设置为None以进行自动缩放。你可能还需要扩展规模。字体。这可以通过在InitializeComponent

之前添加以下内容来完成
Font = new Font(Font.Name, Font.Size * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);

我不知道托管的ActiveX控件如何响应这些设置。你尝试的时候请告诉我。

答案 1 :(得分:0)

右键单击可执行文件 - >属性 - >兼容性 - >检查"在高DPI设置上禁用显示缩放"。 (除了10之外的Windows版本可能略有不同。) 对于我来说,这对于我来说是爆炸性的应用程序#34;

答案 2 :(得分:0)

将此添加到清单文件应该可以解决问题:

 <asmv3:windowsSettings 
    xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
       <dpiAware>false</dpiAware>   
 </asmv3:windowsSettings>