cef修改html,CEF 设置页面缩放级别

现在很多高分屏在笔记本和家用市场逐步扩大,普通应用大小在一个 2K 或者 4K 屏幕下就像一个便利签一样贴在屏幕上面,看着很小。于是操作系统提供了对分辨率进行缩放的功能,比如我可以设置当前分辨率放大到 125%,这样就可以让字体或者窗口看着更大一些。同样基于 CEF 制作的客户端程序也会随之放大到 125%,但是内嵌的网页呢?当然也需要根据系统设置放大缩小,CEF 给我们提供了 SetZoomLevel 方法让我们来设置页面的缩放比例。

同样,我们还是用 CEF 官方给出的 cefclient 举例,cefclient 提供了 ZoomLevel 的修改示例,在程序菜单中选择 Tests->Zoom In 页面就会放大,跟进代码我们可以看到。

1ca151fbb5026e9ea343a1d09d86ac3f.png

实际是调用了通过 browser 获取到的 host 中的 SetZoomLevel 方法。

void ModifyZoom(CefRefPtr browser, double delta) {

if (!CefCurrentlyOn(TID_UI)) {

// Execute on the UI thread.

CefPostTask(TID_UI, base::Bind(&ModifyZoom, browser, delta));

return;

}

browser->GetHost()->SetZoomLevel(browser->GetHost()->GetZoomLevel() + delta);

}

缩放的维度在 cefclient 中是 0.5 一个维度,这个计算的差值可以参考 cef 社区中的讨论:https://www.magpcss.org/ceforum/viewtopic.php?f=6&t=11491,当你想根据系统的缩放比例自动设置页面的缩放大小时,你要做的有以下几个步骤。

获取当前系统的缩放比例

根据缩放比例计算出实际应用到 CEF 的缩放数值

调用 SetZoomLevel 方法设置缩放比例

另外还要考虑一个时机的问题,我实测在 AfterCreated 中去设置是不生效的,这个阶段比较早,在 LoadEnd 中去设置是生效的,但是这个位置又比较晚,所以根据你自己项目的情况来决定哪里去设置这个缩放比例吧。

相关

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值