升级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
相关产品推荐
相关产品推荐

