W8.1 UWP / Xaml WebView 在高 DPI 屏幕上渲染较小
W8.1 UWP / Xaml WebView rendering small on High DPI Screens
我们的 windows 商店应用程序存在问题,它使用 WebView 显示从文件系统生成的自定义 html。该应用程序是用 WPF / Xaml 编写的,因此本机 UI 组件会根据用户设置的屏幕缩放比例自动缩放 - 但是嵌入式 WebView 不会 - 这意味着在我笔记本电脑的 4k 屏幕上, WebView 字体非常小。目前我们必须支持 windows 8.1,因此我们正在针对该目标进行编译——这意味着我们正在嵌入一个 IE11 实例。我认为设置浏览器缩放级别可能是一个短期解决方案,但它最终会在主 window 上出现水平滚动条,所以这是不行的。
我发现了一个 MSDN article,它表明底层 COM 组件存在问题,无法自动通知其所嵌入的应用程序的高 DPI 感知。本文展示了如何通过覆盖组件发送的标志来解决这个问题。然而,沿着这条路走下去,似乎 UWP 平台上可用的 WebView 被进一步抽象化,您无法获取上述修复工作所需的 Document MSHTML 对象的实例。
我也注意到这个 answer 似乎推断 windows 8.1 应用程序和 windows 10 OS 之间存在比例因子冲突,但我无法查找有关该特定问题的更多信息。
非常欢迎任何建议,因为我无法想象我们正在做的事情如此罕见。
谢谢
事实证明这是由多种因素共同造成的:
- 我们使用的是Bootstrap3,它将根HTML字体大小设置为10px,并且IE WebView(Even Edge)使用字体大小调整来处理DPI缩放,有一个基础字体大小设置禁用此功能。
- Windows 以 Windows 8.1 为目标的应用程序的最大缩放比例为 200%(这是当时支持的最大值)。然而 Windows10 将此限制增加到 iirc 400%。我的笔记本电脑屏幕设置为 250%,因为它是 4k,但是当我在上面放一个 windows 8.1 应用程序时,它们的最大值是 200%,所以那里的尺寸也略有减小。
我仍然认为这是 Windows Store WebView 控件中的一个相当严重的问题,就像我在标准边缘打开 bootstrap 站点一样,没问题。即使我用 IE11 做同样的事情,页面内容看起来还不错,即使 IE11 本身根本不处理 DPI。
我们的 windows 商店应用程序存在问题,它使用 WebView 显示从文件系统生成的自定义 html。该应用程序是用 WPF / Xaml 编写的,因此本机 UI 组件会根据用户设置的屏幕缩放比例自动缩放 - 但是嵌入式 WebView 不会 - 这意味着在我笔记本电脑的 4k 屏幕上, WebView 字体非常小。目前我们必须支持 windows 8.1,因此我们正在针对该目标进行编译——这意味着我们正在嵌入一个 IE11 实例。我认为设置浏览器缩放级别可能是一个短期解决方案,但它最终会在主 window 上出现水平滚动条,所以这是不行的。
我发现了一个 MSDN article,它表明底层 COM 组件存在问题,无法自动通知其所嵌入的应用程序的高 DPI 感知。本文展示了如何通过覆盖组件发送的标志来解决这个问题。然而,沿着这条路走下去,似乎 UWP 平台上可用的 WebView 被进一步抽象化,您无法获取上述修复工作所需的 Document MSHTML 对象的实例。
我也注意到这个 answer 似乎推断 windows 8.1 应用程序和 windows 10 OS 之间存在比例因子冲突,但我无法查找有关该特定问题的更多信息。
非常欢迎任何建议,因为我无法想象我们正在做的事情如此罕见。
谢谢
事实证明这是由多种因素共同造成的:
- 我们使用的是Bootstrap3,它将根HTML字体大小设置为10px,并且IE WebView(Even Edge)使用字体大小调整来处理DPI缩放,有一个基础字体大小设置禁用此功能。
- Windows 以 Windows 8.1 为目标的应用程序的最大缩放比例为 200%(这是当时支持的最大值)。然而 Windows10 将此限制增加到 iirc 400%。我的笔记本电脑屏幕设置为 250%,因为它是 4k,但是当我在上面放一个 windows 8.1 应用程序时,它们的最大值是 200%,所以那里的尺寸也略有减小。
我仍然认为这是 Windows Store WebView 控件中的一个相当严重的问题,就像我在标准边缘打开 bootstrap 站点一样,没问题。即使我用 IE11 做同样的事情,页面内容看起来还不错,即使 IE11 本身根本不处理 DPI。