2017-03-02 155 views
1

我已經成功在c#winforms中製作了個人迷你瀏覽器應用程序。 因爲我想要一些更花哨的效果,所以我正在考慮製作一個WPF應用程序。所以我嘗試了wiki教程,並用瀏覽器設置了一個簡單的WPF表單,但注意到它的性能不佳。在非常簡單的網頁中選擇文本,或者在滾動頁面時,甚至都會引起注意。有什麼可以做的嗎?如果沒有,那麼我認爲它將只是winforms,因爲那個行爲表現良好。WPF和CefSharp:性能不佳

編輯:我的規格:cefsharp的http://users.telenet.be/dropbox/specs.html

+1

網格嘗試技巧[這裏](https://github.com/cefsharp/CefSharp/issues/729) –

+0

哪些WiKi教程?你運行一個分析器來查找哪些代碼部分很慢? – bradgonesurfing

+0

- https://github.com/cefsharp/CefSharp/wiki/Quick-Start - 我爲什麼要運行一個探查器,它是第三方代碼,我的應用根本沒有代碼。 – Edwin

回答

1

WPF版本使用的渲染比的WinForms的不同模式。在WPF中,它基本上將每個幀複製到位圖中,您可以想象它可能變得多慢。這在高分辨率屏幕上尤其明顯。有一些選項可以提高性能(例如參見here),但根據我的經驗(我嘗試了所有選項),其中的非確實有助於匹配WinForms。爲了在我的WPF項目中順利地運行cefsharp,我實際上不得不使用WinForms版本的cefsharp並在​​WindowsFormsHost之內託管它 - 這有助於解決性能問題,但它有一些注意事項(例如,您不能部分隱藏WPF控件背後的WinForms託管控件 - 它會總是呈現在一切之上)。現在我認爲這是唯一可行的選擇,因爲高分辨率屏幕現在已經很寬泛。

2

這將禁用WebGL,查看源代碼以確定哪些標記符合您的要求。 「grMain」 是WPF

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

我也試過這個,它沒有幫助高分辨率屏幕(2K +)的性能。 – Evk