根本原因是navicat未声明dpi感知,windows强制位图拉伸导致模糊;需对navicat.exe启用“替代高dpi缩放行为”并选“应用程序”或“系统(增强)”,配合完整cleartype校准及原生分辨率设置。
navicat 在 windows 高分屏下界面模糊,根本不是它自己“画得差”,而是 windows 强行替它做了一次“模糊拉伸”——因为 navicat.exe 默认没声明自己能处理高 dpi 缩放,系统就把它当老程序,用双线性插值把整个窗口位图放大,再糊糊地画到屏幕上。
为什么 Windows 会强制插值拉伸?
Windows 从 Vista 起就有一套 DPI 感知模型,但 Navicat(尤其 16.x 及更早版本)的 manifest 文件里没写 dpiAware=true,也没调用 SetProcessDpiAwarenessContext。结果系统判定它是 unaware 程序,缩放时直接对渲染后的位图做缩放,跳过了字体重排、控件重绘这些关键步骤。
- 文字发虚、中英文混排糊成一片 → 字体光栅化发生在低 DPI 下,再被拉伸
- SQL 编辑器行号错位、按钮溢出边界 → 坐标计算仍按 96 DPI 做,但显示层已放大
- 多显示器拖拽后突然变糊 → 主屏 150%、副屏 100%,而 Navicat 不支持
PerMonitorV2,无法响应跨屏 DPI 切换
“替代高 DPI 缩放行为”勾了为啥还不清楚?
勾选只是第一步,真正起作用的是下拉菜单里的“缩放执行”策略。很多人卡在这儿:
- 选
应用程序:让 Navicat 自己缩放(推荐),但旧版 Qt 5 或未打补丁的 Navicat 16 可能崩溃或光标异常 - 选
系统(增强):Windows 插手补偿重绘,对 Qt 程序兼容性最好,但必须配合 ClearType 校准,否则文字边缘泛灰 - 选
系统:绕过 ClearType,所有文字变块状锯齿,绝对要避开 - 快捷方式设了不生效?必须操作真实
navicat.exe文件,不是 .lnk
ClearType 校准为什么不能跳步?
ClearType 不是开关,是亚像素级视觉校准。跳过任意一组对比选择,SystemParametersInfo 就不会写入完整 gamma 补偿值,导致中文笔画断裂、英文小写字母 g/j 底部拖影。
- 必须按 Win + S 搜“调整ClearType文本”,全程走完 5 组样本
- 每组只选“黑色最实、边缘无红蓝边、笔画不断开”的那一行
- 别凭“哪个更柔和”选,要凭“像印出来一样干净”来判断
- 校准后立刻在 Navicat 查询窗口执行
SELECT '测试中文' AS col;验证
最容易被忽略的一点:所有这些设置都依赖显示器运行在原生分辨率。如果你的 4K 屏设成了 3200×1800,GPU 层已经做了插值,再怎么调 DPI 和 ClearType 都是白搭。











