【问题标题】:Delphi TWebBrowser window.devicePixelRatio propertyDelphi TWebBrowser window.devicePixelRatio 属性
【发布时间】:2017-08-30 08:53:39
【问题描述】:

在我们的应用程序中,我们使用 Delphi 的 TWebBrowser 组件来显示 Web 内容。现在我们有一个问题,如果 Windows 有缩放监视器,例如 125% 缩放。在这种情况下,一些 HTML 控件无法正确呈现,因为 JavaScript 中的 window.devicePixelRatio 属性没有更新而是保持为 1,尽管在 125% 缩放的监视器上它应该是 1.25。

有没有办法解决这个问题?从 JavaScript 内部无法更改此值,但可能从 Delphi 方面更改?

编辑:我尝试了一个嵌入式铬,它工作正常。但目前不可能从 ie 转移到 chromium。

一个示例 HTML:

<!DOCTYPE html>
<html>
    <body>
        <div style="width: 100px; height: 25px; border: 1px solid black; border-radius: 4px; overflow: hidden">
            <span style="font-size:10pt; white-space: pre">Long sample text</span>
        </div>
    </body>
</html>

在嵌入式 IE 中,文本被剪切

【问题讨论】:

  • 尝试至少在 IE8 兼容模式下运行您的应用程序。
  • 我们的应用程序使用最新的 IE11 运行,我们必须这样做。
  • 所以你在IE11兼容模式下运行你的应用程序?
  • 告诉我怎么做,我可以试试
  • This way。如果你还没有这样做,你的应用程序。正在向后兼容 IE7 模式下运行。请注意,IE11 模式并不适合所有人(嵌入式控件的行为与 Internet Explorer 不同;最好先尝试 IE10)。

标签: delphi scale twebbrowser


【解决方案1】:

即使它已过时,您会发现为您的应用程序启用FEATURE_96DPI_PIXEL 将返回正确的像素比率:

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_96DPI_PIXEL
                     yourapplication.exe = (DWORD) 00000001

推荐的方法是启用DOCHOSTUIFLAG_DPI_AWARE 标志。

【讨论】:

  • 我现在无法测试,但X-UA-Compatible 设置为IE=edge 不应该处理任何兼容性问题吗?例如stackoverflow.com/a/44183405/937125
  • 感谢您的信息:)
  • 不能使用过时的方法。而对于另一个标志,我找不到任何样本或类似的东西,而且我没有让它工作。
  • @Sumafu,只需将标志添加到注册表中,它就会起作用(正如我所尝试的那样)。 IE 已经过时了
  • 好的,但是在注册表的什么位置?
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
相关资源
最近更新 更多