解决C# Winform高DPI字体模糊得两种方案

解决C# Winform高DPI字体模糊得两种方案

1. 前置步骤

设置所有的Form窗口的AutoScaleMode为Dpi模式

如下图所示:
解决C# Winform高DPI字体模糊得两种方案_第1张图片

2. 有两种方案来设置应用程序DPI Aware

方案一 添加应用程序清单文件

为应用程序添加app.manifest清单文件

取消清单文件中的,如下注释:

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

方案二 调用Windows Api

Main()方法(默认Winform此方法位于Program.cs源码中)中添加Windows Api函数的调用,如下:

    static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {
            if (Environment.OSVersion.Version.Major >= 6)
            {
                SetProcessDPIAware();
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }

        [System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern bool SetProcessDPIAware();
    }

总结

个人推荐使用方案一

微软官方也推荐此方案,详情见:Setting the default DPI awareness for a process

你可能感兴趣的:(c#,winform常见问题)