You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级CefSharp至108.4.130后Windows应用UI尺寸过小问题

解决CefSharp升级后Windows应用UI字体/尺寸过小问题

问题根源

CefSharp 100+版本默认启用了系统DPI感知,而旧版本(如75.1.14)未采用该策略,导致Windows窗体的缩放逻辑被改变,非WebView区域的原生UI控件出现缩放异常。

具体修复方案

1. 配置应用DPI感知模式

在项目的app.manifest文件中添加或修改DPI配置,让应用和CefSharp的DPI策略保持一致:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <!-- 适配多显示器DPI,Windows 10+推荐用PerMonitorV2 -->
    <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
    <!-- 兼容旧系统可添加 -->
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
  </windowsSettings>
</application>

如果项目没有app.manifest,直接新增一个应用清单文件即可。

2. 调整CefSharp初始化设置

在Cef初始化前显式配置高DPI支持,同时确保WinForms/WPF控件的缩放模式正确:

// Cef初始化前开启高DPI支持
Cef.EnableHighDPISupport();

// WinForms窗体需设置AutoScaleMode为Dpi
this.AutoScaleMode = AutoScaleMode.Dpi;

// 可选:给ChromiumWebBrowser控件单独开启DPI缩放
_chromeWebBrowser.DpiScaleEnabled = true;

3. 手动修正原生控件缩放

如果部分控件仍有异常,可根据当前系统DPI手动调整字体或控件尺寸:

// WinForms示例:根据DPI比例调整字体大小
float dpiScale = this.CreateGraphics().DpiX / 96f;
btnSubmit.Font = new Font(btnSubmit.Font.FontFamily, btnSubmit.Font.Size * dpiScale);

4. 临时回退方案(仅限测试)

如果以上方法无效,可临时关闭CefSharp的高DPI支持(可能影响WebView页面缩放):

// Cef初始化前调用,禁用高DPI支持
Cef.DisableHighDPISupport();

内容的提问来源于stack exchange,提问作者Nidhin Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:25:20