zoukankan      html  css  js  c++  java
  • CEF3开发者系列之CefEnableHighDPISupport详解

    在CEF3中,CefEnableHighDPISupport()这个接口函数在使用时一般不为人所注意,但是如果稍有不慎,会造成打开的网页不能填满窗口的问题。如果是需要flash插件才能运行的游戏。则会出现打开游戏后,调整窗口大小时,发现游戏界面的大小并未随之改变,而且游戏里的点击位置却与界面显示的位置也不对应。

    是什么原因出现这种情况呢?先来看看CefEnableHighDPISupport()这个接口函数是干什么用的。cef_app.h中,如下所说。

    ///
    // Call during process startup to enable High-DPI support on Windows 7 or newer.
    // Older versions of Windows should be left DPI-unaware because they do not
    // support DirectWrite and GDI fonts are kerned very badly.
    ///
    /*--cef(capi_name=cef_enable_highdpi_support)--*/
    void CefEnableHighDPISupport();
    

     翻译:windows7或者更高版本系统中,在进程启动时设置High-DPI为启用状态。而低版本的windows系统对DirectWrite和DPI支持不好(设置这个不会有什么作用)。

    什么DPI? 全称是dots per inch (DPI), 也就是每英寸的点数,在显示器上就是每英寸的像素个数,Window上一般默认是96 dpi 作为100% 的缩放比率, 但是要注意的是该值未必是真正的显示器物理值, 只是Windows里我们的一个参考标准。(详细参见:关于Windows高DPI的一些简单总结)。

    如果设置了对高DPI的支持,但是打开网页时,没有设置相应的缩放比例,那么在win7以上版本里,很容易出现文章开头所说的问题。解决这个问题很简单,要么不要使用CefEnableHighDPISupport()这个接口函数,要么去设置网页的缩放比例。

    设置网页的缩放大小使用SetZoomLevel(double zoomLevel)这个函数,如下所示:
      ///
      // Change the zoom level to the specified value. Specify 0.0 to reset the
      // zoom level. If called on the UI thread the change will be applied
      // immediately. Otherwise, the change will be applied asynchronously on the
      // UI thread.
      ///
      /*--cef()--*/
      virtual void SetZoomLevel(double zoomLevel) =0;
    

    翻译:执行渲染之前,在UI线程中,使用这个函数重置缩放比例,可以立即生效。

  • 相关阅读:
    Redis闪退解决办法
    excel导入数据库,存在则更新不存在添加
    sql取逗号前后数据与批量修改某一字段某一值
    sql查询一个字段不同值并返回
    表格加边框
    图论算法-求(有向)图中任意两点间所有路径
    Java实时监控日志文件并输出 转
    ResultSet的记录数  转
    eclipse中显示“编辑器中没有main类型
    压缩
  • 原文地址:https://www.cnblogs.com/guolixiucai/p/7081975.html
Copyright © 2011-2022 走看看