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线程中,使用这个函数重置缩放比例,可以立即生效。

  • 相关阅读:
    oracle的分析函数over 及开窗函数
    ASP.NET中分布式事务的使用
    后台实现显示欢迎用户登陆的方法
    AjaxHelper的get和post请求的封装类
    登陆权限验证Session和Cookie用法及BasePage类使用
    四个常用.NET的SqlHelper的方法
    ASP.NET在实际开发中验证码的用法
    SQL Server事务的存储过程
    利用JQuery实现全选和反选的几种方法
    JS中表格的全选和删除要注意的问题
  • 原文地址:https://www.cnblogs.com/guolixiucai/p/7081975.html
Copyright © 2011-2022 走看看