解决winform(C#)界面在高分辨率(DPI)屏幕下字体模糊问题

指定进程的默认 DPI 识别有两种主要方法:

1 ) 通过应用程序清单设置

2 ) 通过 API 调用以编程方式

为进程 (Windows 设置默认 DPI 感知) - Win32 apps | Microsoft Docs

 

第一种方法:通过应用程序清单设置

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

添加 app.manifest 的步骤

鼠标右击工程在菜单中选择“属性”,点击工程属性的“安全性”标签,在安全性标签页中勾选“启用ClickOnce安全设置”,并选择“这是完全可信的应用程序”,保存工程,此时在Properties下已经自动生成了app.manifest文件。

2)打开 app.manifest ,取消红框的注释即可

 

 

第一种方法:通过 API 调用以编程方式

 在Program.cs 中添加红框的代码,DPI函数需在窗口打开函数之前

namespace ui
{
    internal static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {

            if (Environment.OSVersion.Version.Major >= 6)
                SetProcessDPIAware();

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());


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

 

posted @ 2022-01-13 17:00  帅气型男  阅读(3239)  评论(0编辑  收藏  举报