【问题标题】:Web content is rendered twice in ChromiumFX网页内容在 ChromiumFX 中呈现两次
【发布时间】:2016-02-16 00:58:41
【问题描述】:

我正在使用ChromiumFX 在 WPF 应用程序中呈现一些网页内容。但似乎内容以某种方式呈现了两次,如下面的屏幕截图所示。较大的是预期大小,可以正常工作,而较小的则不响应任何鼠标操作。较小的只是一张静态图片。

请注意,我们已经在不同屏幕尺寸和分辨率的 x86/x64 机器上的 Win7/Win8/Win10 上测试了完全相同的应用程序。除 Surface Pro 3/4 + Win10 外,一切正常。它也适用于 Surface Pro 1 + Win8。

我猜 Chromium 内核正在使用原生 Windows API 在幕后进行渲染。所以 Surface 硬件、OS API 和 Chromium 内核可能存在一些不兼容的问题。但老实说,我不知道从哪里开始研究。你们能给我一个提示吗?提前致谢!

详细版本信息:

  • WPF -> 4.0
  • ChromiumFX -> 3.2526.1
  • CEF -> 3.2526.1359.gced449a
  • 铬 -> 47.0.2526.73
  • 操作系统-> Win10 65位
  • 硬件 -> Surface Pro 3/4

【问题讨论】:

  • 您好,ChromiumFX 作者在这里。我知道这是一个老问题,但我今天第一次看到它,因为有人在问题跟踪器 (bitbucket.org/chromiumfx/chromiumfx/issues/82) 中提到了它。您找到解决此问题的方法了吗?
  • @wborgsm 嗨,有没有为任何类型的 MS Office 插件设置 chromiumfx 的教程?我想启动一个 Outlook 插件并使用 CFX。
  • @Kooki 你需要什么样的教程?基本上它是使用 CFX 库中提供的 WinForm 控件并将其嵌入到 Outlook VSTO 插件中。

标签: c# wpf chromium chromium-embedded


【解决方案1】:

2016-7-11 更新

经过进一步测试,原来的解决方案似乎不是最好的。如果另一台显示器连接到 PC 并将应用程序窗口移到那里,则会再次出现此问题。

所以最终的解决方案应该是将 app.manifest 添加到应用程序并启用dpiAware 属性。

<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
  <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>


终于搞定了。所以我会给出答案,以防有人遇到同样的问题。

其实这个问题不仅仅发生在 Win10 + Surface Pro 上。它发生在所有带有win10的设备上。一旦用户更改了默认 DPI 设置,就会出现问题。

提交的申请的解决方法是 disable display scaling on high dpi settings 为您的申请。

为了一劳永逸地解决问题,您可能需要在安装过程中为您的应用程序添加一个注册表项,如下所示:

Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"

<RegistryValue Type="string" Name="APPLICATIONROOTDIRECTORY]ApplicationName.exe" Value="~ HIGHDPIAWARE" />

请注意,如果您使用分离的进程进行渲染,请将上述值设置为CfxSettings.BrowserSubprocessPath的值。

【讨论】:

  • 非常感谢您分享这个。注意:除了注册表解决方案之外,还应该可以在应用程序中嵌入的清单文件中调整 dpi 感知。
猜你喜欢
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多