WPF和CefSharp:表现迟缓

时间:2017-03-02 07:35:22

标签: c# wpf cefsharp

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

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

这将禁用WebGL,查看源代码以确定最符合您要求的标记。 " grMain"是Wpf中的网格

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