WPF 獲取控制項間的相對位置

2021-09-19 22:44:44 字數 1017 閱讀 5346

原文:

[wpf]獲取控制項間的相對位置

[wpf]獲取控制項間的相對位置

周銀輝

我們知道wpf有著比較靈活的布局方式,關於某個控制項的座標,canvas中的元素最簡單,我們可以直接通過其getleft()與gettop方法來獲取,但其它布局面板中的,以及存在於不同布局面板中的元素中間的相對位置就比較讓我們頭疼了,其實有簡單方法的,不知你有沒發現。

1,獲取元素相對于父控制項的位置

使用vector visualtreehelper.getoffset(visual visual)方法,其會返回visual在其父控制項中的偏移量,然後你再將返回值的vector物件轉換成point物件就可以了

2,獲取元素相對於祖宗控制項或子孫控制項的位置

使用元素的 generaltransform transformtoancetor(visual ancetor)方法與generaltransform transformtodescendent(visual descendent),其返回元素相對於祖宗或子孫的generaltransform mygeneraltransform ,然後再使用point thepoint= mygeneraltransform.transform(new point(0,0))得到的thepoint物件就是要找的值了。

3,獲取任意兩個元素見的相對位置

有兩種方式:

如果元素是visual,可以使用元素的generaltransform transformtovisual(visual visual)方法,然後可以與上文第2點的方法從generaltransform 得到thepoint

如果元素是uielement,就更簡單了,可以使用元素的translatepoint(point pt, uielement relativeto)來得到元素上的pt點相對於relativeto時的值,只有我們傳入的pt為(0,0)那麼就可以得到元素上(0,0)點的相對位置,即元素的相對位置

WPF 獲取控制項間的相對位置

wpf 獲取控制項間的相對位置 周銀輝 我們知道wpf有著比較靈活的布局方式,關於某個控制項的座標,canvas中的元素最簡單,我們可以直接通過其getleft 與gettop方法來獲取,但其它布局面板中的,以及存在於不同布局面板中的元素中間的相對位置就比較讓我們頭疼了,其實有簡單方法的,不知你有沒...

WPF 獲取控制項間的相對位置

wpf 獲取控制項間的相對位置 周銀輝 我們知道wpf有著比較靈活的布局方式,關於某個控制項的座標,canvas中的元素最簡單,我們可以直接通過其getleft 與gettop方法來獲取,但其它布局面板中的,以及存在於不同布局面板中的元素中間的相對位置就比較讓我們頭疼了,其實有簡單方法的,不知你有沒...

WPF 獲取控制項間的相對位置

wpf 獲取控制項間的相對位置 周銀輝 我們知道wpf有著比較靈活的布局方式,關於某個控制項的座標,canvas中的元素最簡單,我們可以直接通過其getleft 與gettop方法來獲取,但其它布局面板中的,以及存在於不同布局面板中的元素中間的相對位置就比較讓我們頭疼了,其實有簡單方法的,不知你有沒...