前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CEF 设置页面缩放级别

CEF 设置页面缩放级别

作者头像
我与梦想有个约会
发布2020-01-04 14:20:46
4.3K0
发布2020-01-04 14:20:46
举报
文章被收录于专栏:jiajia_dengjiajia_deng

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

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

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

代码语言:javascript
复制
void ModifyZoom(CefRefPtr<CefBrowser> 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,当你想根据系统的缩放比例自动设置页面的缩放大小时,你要做的有以下几个步骤。

  1. 获取当前系统的缩放比例
  2. 根据缩放比例计算出实际应用到 CEF 的缩放数值
  3. 调用 SetZoomLevel 方法设置缩放比例

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

相关

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年1月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相关
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档