CefSharp如何進行頁面的縮放(Ctrl+滾輪)

問題:CefSharp如何進行頁面的縮放

摘要:由於CefSharp並沒有提供鼠標滾輪事件。隻有一個KeyboardHandler事件,因此隻能接收到鍵盤事件。

環境:CefShap、Wpf

瞭解CefSharp是否有現成方法調用

通過這個不難看出有一個KeyboardHandler可以用來接收鍵盤的Ctrl按鈕。因此通過這個我們可以說就相當於解決瞭問題的一半瞭,就是可以通過這個來接收按鍵。那麼鼠標的滾輪又如何接收到呢?

CefSharp不能接收到鼠標滾輪 – 困境

相信大夥一開始肯定會想著ChromiumWebBrowser裡自帶的MouseWheel事件。本人一開始也是這樣想的,後來發現程序在鼠標滾動的時候不會進入這個事件裡面,雖然我也不知道這事什麼原理,但很明顯這個方法可能已經行不通瞭。因此我開始瞭我的面向百度編程歷程,但我百度的時候,第一頁第一篇就是說CefSharp的這個縮放,但實際上我進去瀏覽的時候發現,他說說的可能並不是CefSharp,因為我這CefSharp裡根本沒有所謂的鼠標滾輪事件,如下圖所示,因此我覺得這篇文章對我的價值基本上是沒有任何用處。往後翻瞭幾頁依舊沒有任何收獲,至此我陷入瞭困境。

CefSharp不能接收到鼠標滾輪 – 思路

這時的我開始想一些稀奇古怪的招瞭,比如什麼Js註冊頁面縮放啊、企圖在CefSharp上層鋪控件來接收滾輪事件啊等等的。但js註冊頁面縮放經過嘗試也未能達到要求。但第二個思路可以說是為當前的困境提供瞭一個很好的思路。但是腦袋瓜子想著就是既然頁面不能接收我的滾輪事件,我為何不能在上層鋪一層控件呢!這個時候思路一來立馬給我精神的。說幹就幹。一開始的時候如下圖所示。

CefSharp不能接收到鼠標滾輪 – 再臨困境

當我將程序運行起來的時候發現我一開始放置用來測試的按鈕並沒有浮現在頁面的上方。如下圖所示,我再一次懵逼,完全不知所措。因為我也不知道CefSharp是什麼原理,為什麼控件不能浮現在頁面的上方。至此,我又一次陷入瞭困境,並且對我之前的想法已經不抱任何希望。又開始在電腦前盲目的摸魚起來瞭T T。

CefSharp不能接收到鼠標滾輪 – 奇跡再現

有一句話說得可真不錯叫“無心插柳柳成蔭”。這個“奇跡”可以說是無意間給瞭我再一次嘗試解決的機會。由於前面陷入瞭困境,又苦於無法解決。在等待群友幫助的我又開始瞭開一些WPF的基礎知識的查看學習。也正是這一舉動讓我無意間又發現瞭解決控件不能浮在CefSharp上方的問題。那時我正在看菜單這個東西,正巧看到瞭Popup自定義菜單,也正是這個控件讓我對之前那個問題有瞭嘗試的想法。如下圖所示。我弄瞭一個這個Popup。但我運行起來的時候,驚喜的發現他居然浮現在頁面的上方。也就是說我可以通過這個控件來讓他浮現在網頁的上方,這樣一來滾輪事件就可以接收到瞭。這一發現讓我完全可以解決瞭CefSharp不能就收滾輪的問題。至此一來按鍵事件可以通過KeyboardHandler來獲取,滾輪可以通過Popup來獲取。瞬間柳暗花明啊。O(∩_∩)O哈哈~

CefSharp Ctrl+鼠標滾輪進行頁面縮放的處理

通過之前可以看到問題已經有瞭解決的方案瞭,接下來就是將他們結合起來瞭。話不多說。直接上代碼圖吧。O(∩_∩)O哈哈~

簡要介紹下上面幾張圖吧,第一張就是Popup,主要點就在於那個透明度是0.01這樣子當按下Ctrl的時候不會因為Popup的顯現而遮擋住瞭頁面。第二張是滾輪事件頁面縮放代碼,這個用瞭CefSharp自帶的方法。第三張是KeyboardHandler註冊Ctrl按下和按鍵松開時是發送通知來告知頁面變化。第四章就是用來接收KeyboardHandler發送的通知,並改變Popup的顯示和隱藏。至此,這個CefSharp滾輪縮放就解決啦。感覺是很簡單,主要是有沒有思路來解決這個問題。

最後

到此這篇關於CefSharp如何進行頁面的縮放(Ctrl+滾輪)的文章就介紹到這瞭,更多相關CefSharp 頁面縮放內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: