WPF 和 CefSharp:性能缓慢

3
我已经成功地在C# WinForms中制作了一个个人迷你浏览器应用程序。 由于我想要一些更加花哨的效果,考虑制作一个WPF应用程序。因此,我尝试了维基教程并设置了一个简单的带有浏览器的WPF表单,但是注意到它的性能很差。即使在非常简单的网页中选择文本或者只是滚动页面时也会明显感觉到。有什么可以做的吗?如果没有,那么我想就只使用WinForms了,因为它的表现和性能都很好。

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


1
尝试这里的技巧:https://github.com/cefsharp/CefSharp/issues/729 - Ilian
哪个WIKI教程?你运行过分析器来找出代码中哪些部分比较慢吗? - bradgonesurfing
1
  • 这个维基页面:https://github.com/cefsharp/CefSharp/wiki/Quick-Start
  • 为什么我要运行一个分析器,它是第三方代码,而我的应用程序根本没有代码。
- Edwin
2个回答

7
WPF版本的cefsharp使用不同的渲染模式,与WinForms不同。在WPF中,它基本上将每个帧复制到位图中,你可以想象它会变得多么缓慢。这在高分辨率屏幕上特别明显。有一些选项可以提高性能(例如,请参见此处),但根据我的经验(我尝试了所有这些选项),没有一个真正有助于匹配WinForms。为了在我的WPF项目中顺畅运行cefsharp,我实际上必须使用cefsharp的WinForms版本并将其托管在WindowsFormsHost中 - 这有助于解决性能问题,但当然也有其缺点(例如,您无法部分隐藏WinForms托管控件后面的WPF控件 - 它始终会呈现在所有内容的顶部)。目前,我认为这是唯一可行的选择,因为高分辨率屏幕现在相当普遍。

4

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

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

我也尝试过这个,但在高分辨率屏幕(2K+)上并没有提高性能。 - Evk

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