Delphi TWebBrowser窗口的devicePixelRatio属性

3
在我们的应用程序中,我们使用Delphi的TWebBrowser组件来显示Web内容。现在,如果Windows有缩放的监视器(例如125%缩放),我们遇到了问题。在这种情况下,一些HTML控件没有正确渲染,因为JavaScript中的window.devicePixelRatio属性没有更新,而仍然停留在1上,尽管在125%缩放的监视器上它应该是1.25。
有没有可能解决这个问题?从JavaScript内部无法更改此值,但也许可以从Delphi端进行更改?
编辑:我尝试过嵌入式Chromium,那里一切都很顺利。但目前无法从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中,文本被截断了。

1
请尝试在IE8兼容模式下运行您的应用程序。 - Victoria
我们的应用程序使用最新的IE11运行,我们必须这样做。 - Sumafu
1
你在IE11兼容模式下运行你的应用程序吗? - Victoria
告诉我怎么做,然后我可以尝试。 - Sumafu
没有兼容模式的代码。我也尝试了一些不同的代码,但是没有任何改变。 - Sumafu
显示剩余8条评论
1个回答

3

尽管它已经过时,但启用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 应该可以解决任何兼容性问题吧?例如: https://dev59.com/QV8e5IYBdhLWcg3wVJTH#44183405 - kobik
谢谢提供信息 :) - kobik
使用过时的方法不是一个选择。至于另一个标志,我找不到任何示例或类似的东西,我也没有让它工作。 - Sumafu
好的,但在注册表中的哪里? - Sumafu
谢谢,有了这个它可以工作了。只要它能在Windows 10和最新的IE上运行,它也应该能在早期版本中运行:D - Sumafu
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接