WPF 獲取任意元素的位置

2021-09-07 20:27:07 字數 1467 閱讀 3117

原文:

wpfの獲取任意元素的位置

如果布局在grid中:

方法一:

//_stackpanel為子元素,_grid為父元素

point point = _stackpanel.translatepoint(new point(0, 0), (uielement)_grid);

方法二:

//_stackpanel為子元素,_grid為父元素

generaltransform generaltransform = _stackpanel.transformtoancestor(_grid);

point point = generaltransform.transform(new point(0, 0));

如果布局在canvas中:

可以通過panel.setleft等絕對布局,panel.getleft等獲取絕對布局

如果是滑鼠在控制項的位置:

mouse.geposition()

[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中提供了多種布局方式,因此在布局中的定位相對於winform的絕對定位要靈活的多,在wpf中,控制項均沒有如winform中的location屬性,但是,對應的提供了各種設定與獲取相對於承載元素的定位 一般來說,wpf中的布局控制項大多都是相對定位 網格,流式,面板等 如果我們要改變控制項在布...

獲取頁面元素位置

最近在嘗試乙個東西的時候,再次碰到需要獲取元素的位置,這次還是自己來整理一下。offset 一類的屬性有 offsettop offsetleft offsetwidth offsetheight。scroll 一類屬性有 scrollleft scrolltop var sleft element...

Android程式中任意位置獲取Context

context物件在android中是乙個很重要的內容,activity中我們很容易獲得該物件,然後在service以及其他class中並不是那麼簡單。下文介紹如何在任意位置獲得context物件。return instance override public void oncreate 這裡寫上完...