C# winform 窗体缩放失真

邱秋 • 2023年04月15日 • 阅读:206 • csharp

本身窗体在设计器显示没有问题,但运行时窗口却被缩放失真, 呈现锯齿。

解决方法:

修改项目的配置文件,使项目运行时自动检测屏幕分辨率,在高分辨率屏幕禁用系统缩放,在项目应用程序清单文件里有对禁用高分屏自动缩放的支持

1)右击项目-->添加新建项--->运用程序清单文

2) 打开添加的app.manifest,找到如下注释的部分,取消注释

<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
      自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
      选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
      在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。

      将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
  </windowsSettings>
</application>

也就是之前,是注释状态,现在放开即可。

重启应用,窗体显示正常。

我,秦始皇,打钱!