[WPF]获取控件间的相对位置

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
                   [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)点的相对位置,即元素的相对位置
文章来源于 http://www.cnblogs.com/zhouyinhui 版权归原作者所有
WPF控件坐标及区域 wpf中的控件想要获取位置xiangu 阅读详情

相关推荐

WPF父子窗体传输示例

WPF父子窗体传输示例,父窗体向子窗体传参。子窗体回传参数到父窗体。 WPF showdialog模式。

WPF获取控件位置的方法

WPF中提供了多种布局方式,因此在布局中的定位相对于WinForm的绝对定位要灵活的多,在WPF中,控件均没有如WinForm中的Location属性,但是,对应的提供了各种设定与获取相对于承载元素的定位 一般来说,Wpf中的布局控件大多都是相对定位(网格,流式,面板等),如果我们要改变控件在布局中的位置可以用Margin,Padding等类似HTML中...

weixin_30640291的博客 1594

WPF 使用TransformToVisual进行坐标转换

在做关于画图的项目的时候,经常会用到坐标转换。关于静态的坐标转换比较好得到,使用Point p = e.GetPosition(“控件名称”)就可以获取。如果画图过程中所有的控件都是动态生成的,外控件套着很做子空,子控件也有子控件。有几种方法可以做到,1是可以通过查找父类名称的方法,找到最外层的控件,通过e.GetPosition("")直接获取。也可以使用TransformToVisual方法获取。本文将着重说明下TransformToVisual如果查找相对父控件坐标。 设计图: xaml:

chulijun3107的博客 1820

WPF如何获取控件相对位置

关于wpf控件的坐标,Canvas中的元素最简单,我们可以直接通过其GetLeft()与GetTop方法来获取,但其它布局面板中的,以及存在于不同布局面 板中的元素中相对位置就比较让我们头疼了,下面向大家介绍一下几种方法:供大家参考 第一点,获取元素相对于父控件的位置 使用Vector VisualTreeHelper.GetOffset(Visual visual)方法,其会返

独家记忆-涂仕明的专栏 2751

WPF获取相对位置、坐标的方法

原文:WPF获取相对位置、坐标的方法1.获取鼠标在控件中的坐标: 1 private void item_MouseDown(object sender, MouseButtonEventArgs e) 2 { 3 Point point = e.GetPosition(lbl); 4 5 } 6 7 //或者直接使用Mouse类的静...

weixin_34194702的博客 519

WPF获取任意元素的位置

原文:WPF获取任意元素的位置 如果布局在Grid中: 方法一:  //_stackPanel为子元素,_grid为父元素  Point point = _stackPanel.TranslatePoint(new Point(0, 0), (UIElement)_grid);  方法二:  //_stackPanel为子元素,_grid为父元素  Ge...

weixin_33810006的博客 387

WPF—常用控件、属性、事件、详细介绍

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

qq_3517289697的博客 1万+

qt 控件设置相对位置_WPF控件相对位置解析

WPF控件相对位置获取方法是比较简单的。对于初学者来说,掌握这一技巧的应用,可以帮助以后对WPF的深入学习,而且在实际使用中,这是一个非常常用的方法。我们知道WPF有着比较灵活的布局方式,关于某个控件的坐标,Canvas中的元素最简单,我们可以直接通过其GetLeft()与GetTop方法来获取,但其它布局面板中的,以及存在于不同布局面板中的元素中相对位置就比较让我们头疼了,其实有简单方法的...

weixin_42240669的博客 371
上一篇: 银辉给园子里的兄弟姐妹们拜年啦
下一篇: 【全面解析DeepZoom 之一】酷!Deep Zoom
donetk
博客等级 码龄18年 31粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值