WPF使用VisualTreeHelper進(jìn)行命中測(cè)試
一、簡(jiǎn)介
我們有時(shí)候又需求從當(dāng)前視覺樹中找一些東西,比如鼠標(biāo)按下的時(shí)候,看看鼠標(biāo)下的元素都有什么。又比如某塊區(qū)域下有哪些元素?某個(gè)坐標(biāo)點(diǎn)下有哪些元素?這些需求在使用 命中測(cè)試的時(shí)候,可以非常方便和快速的去找到我們需要的內(nèi)容。
二、代碼案例
我在一個(gè)畫板上在不同的位置放了3個(gè)圓形。給他們放置了不同的位置和填充不同的顏色,我們通過(guò)命中測(cè)試判斷如果鼠標(biāo)在圓上抬起了,我們讀取當(dāng)前圓的填充顏色。
XAML:
<Grid MouseLeftButtonUp="Grid_MouseLeftButtonUp"> <Canvas> <!--三個(gè)圓形--> <Ellipse Canvas.Left="30" Canvas.Top="200" Width="130" Height="130" Fill="Blue"/> <Ellipse Canvas.Left="110" Canvas.Top="0" Width="130" Height="130" Fill="Red"/> <Ellipse Canvas.Left="220" Canvas.Top="100" Width="130" Height="130" Fill="Yellow"/> <TextBlock Canvas.Left="0" Canvas.Top="0" Text="抬起鼠標(biāo)左鍵,開始對(duì)鼠標(biāo)所在點(diǎn)進(jìn)行命中測(cè)試" /> </Canvas> </Grid>
后臺(tái)邏輯:
private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { var ellipse = GetVisual(e.GetPosition(this)); MessageBox.Show(ellipse?.Fill?.ToString()); } private Ellipse GetVisual(Point point) { HitTestResult hitResult = VisualTreeHelper.HitTest(this, point); var ellipse = hitResult.VisualHit as Ellipse; return ellipse; }
三、運(yùn)行效果
到此這篇關(guān)于WPF使用VisualTreeHelper進(jìn)行命中測(cè)試的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp.net c#采集需要登錄頁(yè)面的實(shí)現(xiàn)原理及代碼
當(dāng)我們采集頁(yè)面的時(shí)候,如果被采集的網(wǎng)站需要登錄才能采集,原理搞清楚了,就好辦了,我們所要做的僅僅是在采集的時(shí)候(或者說(shuō)HttpWebRequest提交數(shù)據(jù)的時(shí)候),將Cookie信息放入Http請(qǐng)求頭里面就可以了,感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-02-02.net 中按.(點(diǎn))無(wú)法智能提示的bug解決方案
IDE按.無(wú)法智能提示,但是可以編譯并正常使用,在修改別人代碼bug時(shí)遇到的,接下來(lái)為你提供詳細(xì)解決方法,感興趣的你可以參考下哈2013-03-03合并兩個(gè)DataSet的數(shù)據(jù)內(nèi)容的方法
合并兩個(gè)DataSet的數(shù)據(jù)內(nèi)容的方法,需要的朋友可以參考一下2013-03-03安裝.NET Framework進(jìn)度條卡住不動(dòng)的解決方案(推薦)
VS在安裝之前需要安裝.NET Framework,我安裝的是4.0版本。但是安裝進(jìn)度條到一半左右時(shí)就卡住不動(dòng)了。前前后后重試多次,還有幾次重新開機(jī),但都沒用,怎么解決呢,下面給大家分享下解決方案2016-12-12.net中實(shí)現(xiàn)listBox左右移動(dòng)
這里給大家推薦的是一段網(wǎng)友分享的,使用.net實(shí)現(xiàn)listBox左右移動(dòng)的代碼,簡(jiǎn)單實(shí)用,這里記錄下來(lái),有需要的小伙伴參考下吧。2015-03-03詳解在Windows下如何使用AspNetCore Api 和consul
這篇文章主要介紹了詳解在Windows下如何使用AspNetCore Api 和consul,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06