CefSharp如何進(jìn)行頁(yè)面的縮放(Ctrl+滾輪)
問(wèn)題:CefSharp如何進(jìn)行頁(yè)面的縮放
摘要:由于CefSharp并沒(méi)有提供鼠標(biāo)滾輪事件。只有一個(gè)KeyboardHandler事件,因此只能接收到鍵盤(pán)事件。
環(huán)境:CefShap、Wpf
了解CefSharp是否有現(xiàn)成方法調(diào)用
通過(guò)這個(gè)不難看出有一個(gè)KeyboardHandler可以用來(lái)接收鍵盤(pán)的Ctrl按鈕。因此通過(guò)這個(gè)我們可以說(shuō)就相當(dāng)于解決了問(wèn)題的一半了,就是可以通過(guò)這個(gè)來(lái)接收按鍵。那么鼠標(biāo)的滾輪又如何接收到呢?
CefSharp不能接收到鼠標(biāo)滾輪 - 困境
相信大伙一開(kāi)始肯定會(huì)想著ChromiumWebBrowser里自帶的MouseWheel事件。本人一開(kāi)始也是這樣想的,后來(lái)發(fā)現(xiàn)程序在鼠標(biāo)滾動(dòng)的時(shí)候不會(huì)進(jìn)入這個(gè)事件里面,雖然我也不知道這事什么原理,但很明顯這個(gè)方法可能已經(jīng)行不通了。因此我開(kāi)始了我的面向百度編程歷程,但我百度的時(shí)候,第一頁(yè)第一篇就是說(shuō)CefSharp的這個(gè)縮放,但實(shí)際上我進(jìn)去瀏覽的時(shí)候發(fā)現(xiàn),他說(shuō)說(shuō)的可能并不是CefSharp,因?yàn)槲疫@CefSharp里根本沒(méi)有所謂的鼠標(biāo)滾輪事件,如下圖所示,因此我覺(jué)得這篇文章對(duì)我的價(jià)值基本上是沒(méi)有任何用處。往后翻了幾頁(yè)依舊沒(méi)有任何收獲,至此我陷入了困境。
CefSharp不能接收到鼠標(biāo)滾輪 - 思路
這時(shí)的我開(kāi)始想一些稀奇古怪的招了,比如什么Js注冊(cè)頁(yè)面縮放啊、企圖在CefSharp上層鋪控件來(lái)接收滾輪事件啊等等的。但js注冊(cè)頁(yè)面縮放經(jīng)過(guò)嘗試也未能達(dá)到要求。但第二個(gè)思路可以說(shuō)是為當(dāng)前的困境提供了一個(gè)很好的思路。但是腦袋瓜子想著就是既然頁(yè)面不能接收我的滾輪事件,我為何不能在上層鋪一層控件呢!這個(gè)時(shí)候思路一來(lái)立馬給我精神的。說(shuō)干就干。一開(kāi)始的時(shí)候如下圖所示。
CefSharp不能接收到鼠標(biāo)滾輪 - 再臨困境
當(dāng)我將程序運(yùn)行起來(lái)的時(shí)候發(fā)現(xiàn)我一開(kāi)始放置用來(lái)測(cè)試的按鈕并沒(méi)有浮現(xiàn)在頁(yè)面的上方。如下圖所示,我再一次懵逼,完全不知所措。因?yàn)槲乙膊恢繡efSharp是什么原理,為什么控件不能浮現(xiàn)在頁(yè)面的上方。至此,我又一次陷入了困境,并且對(duì)我之前的想法已經(jīng)不抱任何希望。又開(kāi)始在電腦前盲目的摸魚(yú)起來(lái)了T T。
CefSharp不能接收到鼠標(biāo)滾輪 - 奇跡再現(xiàn)
有一句話說(shuō)得可真不錯(cuò)叫“無(wú)心插柳柳成蔭”。這個(gè)“奇跡”可以說(shuō)是無(wú)意間給了我再一次嘗試解決的機(jī)會(huì)。由于前面陷入了困境,又苦于無(wú)法解決。在等待群友幫助的我又開(kāi)始了開(kāi)一些WPF的基礎(chǔ)知識(shí)的查看學(xué)習(xí)。也正是這一舉動(dòng)讓我無(wú)意間又發(fā)現(xiàn)了解決控件不能浮在CefSharp上方的問(wèn)題。那時(shí)我正在看菜單這個(gè)東西,正巧看到了Popup自定義菜單,也正是這個(gè)控件讓我對(duì)之前那個(gè)問(wèn)題有了嘗試的想法。如下圖所示。我弄了一個(gè)這個(gè)Popup。但我運(yùn)行起來(lái)的時(shí)候,驚喜的發(fā)現(xiàn)他居然浮現(xiàn)在頁(yè)面的上方。也就是說(shuō)我可以通過(guò)這個(gè)控件來(lái)讓他浮現(xiàn)在網(wǎng)頁(yè)的上方,這樣一來(lái)滾輪事件就可以接收到了。這一發(fā)現(xiàn)讓我完全可以解決了CefSharp不能就收滾輪的問(wèn)題。至此一來(lái)按鍵事件可以通過(guò)KeyboardHandler來(lái)獲取,滾輪可以通過(guò)Popup來(lái)獲取。瞬間柳暗花明啊。O(∩_∩)O哈哈~
CefSharp Ctrl+鼠標(biāo)滾輪進(jìn)行頁(yè)面縮放的處理
通過(guò)之前可以看到問(wèn)題已經(jīng)有了解決的方案了,接下來(lái)就是將他們結(jié)合起來(lái)了。話不多說(shuō)。直接上代碼圖吧。O(∩_∩)O哈哈~
簡(jiǎn)要介紹下上面幾張圖吧,第一張就是Popup,主要點(diǎn)就在于那個(gè)透明度是0.01這樣子當(dāng)按下Ctrl的時(shí)候不會(huì)因?yàn)镻opup的顯現(xiàn)而遮擋住了頁(yè)面。第二張是滾輪事件頁(yè)面縮放代碼,這個(gè)用了CefSharp自帶的方法。第三張是KeyboardHandler注冊(cè)Ctrl按下和按鍵松開(kāi)時(shí)是發(fā)送通知來(lái)告知頁(yè)面變化。第四章就是用來(lái)接收KeyboardHandler發(fā)送的通知,并改變Popup的顯示和隱藏。至此,這個(gè)CefSharp滾輪縮放就解決啦。感覺(jué)是很簡(jiǎn)單,主要是有沒(méi)有思路來(lái)解決這個(gè)問(wèn)題。
最后
到此這篇關(guān)于CefSharp如何進(jìn)行頁(yè)面的縮放(Ctrl+滾輪)的文章就介紹到這了,更多相關(guān)CefSharp 頁(yè)面縮放內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用 BenchmarkDotNet 對(duì) C# 代碼進(jìn)行基準(zhǔn)測(cè)試
這篇文章主要介紹了使用 BenchmarkDotNet 對(duì) C# 代碼進(jìn)行基準(zhǔn)測(cè)試,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03C# 無(wú)邊框窗體邊框陰影效果的簡(jiǎn)單實(shí)現(xiàn)
這篇文章介紹了C# 無(wú)邊框窗體邊框陰影效果的簡(jiǎn)單實(shí)現(xiàn),有需要的朋友可以參考一下2013-10-10C#中科學(xué)繪圖庫(kù)ScottPlot的使用詳解
ScottPlot是基于.Net的一款開(kāi)源免費(fèi)的交互式可視化庫(kù),支持Winform和WPF等UI框架,本文給大家介紹了C#中科學(xué)繪圖庫(kù)ScottPlot的使用方法,文中示例在WPF環(huán)境中運(yùn)行,需要的朋友可以參考下2023-12-12C#實(shí)現(xiàn)身份證驗(yàn)證功能的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)身份證驗(yàn)證功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12深入分析NTFS中文件被鎖定導(dǎo)致Process.Start失敗的詳解
本篇文章是對(duì)NTFS中文件被鎖定導(dǎo)致Process.Start失敗進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

C#設(shè)計(jì)模式之Strategy策略模式解決007大破密碼危機(jī)問(wèn)題示例

Unity UGUI的ContentSizeFitter內(nèi)容尺寸適應(yīng)器組件使用示例