解决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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)