WPF 和 CefSharp:性能低下

WPF and CefSharp: sluggish performance

我已经在 c# winforms 中成功制作了一个个人迷你浏览器应用程序。 因为我想要一些更花哨的效果,所以我正在考虑制作一个 WPF 应用程序。所以我尝试了 wiki 教程并使用浏览器设置了一个简单的 WPF 表单,但发现它的性能很差。在非常简单的网页中选择文本时,或者只是在滚动页面时,它甚至会很明显。有什么可以做的吗?如果没有,我想那将只是 winforms,因为它的行为和性能都很好。

编辑:我的规格:http://users.telenet.be/dropbox/specs.html

cefsharp 的 WPF 版本使用与 WinForms 不同的渲染模型。在 WPF 中,它基本上将每个帧复制到位图中,您可能会想象它会变得多慢。这在高分辨率屏幕上尤为明显。有一些选项可以提高该性能(例如,参见 here),但根据我的经验(我尝试了所有这些选项),它们中没有一个真正有助于匹配 WinForms。为了 运行 cefsharp 在我的 WPF 项目中顺利进行,我实际上必须使用 WinForms 版本的 cefsharp 并将其托管在 WindowsFormsHost 中 - 这有助于解决性能问题,但当然有一些警告(例如你不能部分隐藏 WinForms WPF 控件后面的托管控件 - 它总是呈现在所有内容之上)。现在我仍然认为这是唯一可行的选择,因为高分辨率屏幕现在非常普遍。

这将禁用 WebGL,请查看源代码以确定哪些标志最适合您的要求。 "grMain" 是 Wpf 中的一个 Grid

CefSettings s = new CefSettings();
s.SetOffScreenRenderingBestPerformanceArgs();
Cef.Initialize(s);
ChromiumWebBrowser wbMain = new ChromiumWebBrowser();
grMain.Children.Add(wbMain);