[英]How to get the Left,Top,Right,Bottom point of a UIElement in WPF?
[英]Getting the top left coordinates of a WPF UIElement
我正在扩展 Microsoft resize Adorner
示例,并且需要能够在拖动左下角拖动手柄后重新定位元素。
因此,如果我在表单上放置了一个 150 宽、35 高的文本框,并且左下方的拖动手柄将宽度更改为 200 宽,则文本框的右侧保持不变,但左侧边缘向左移动。
所以我需要知道 UIElement 的左上角坐标。 我试过 Canvas.GetLeft 和 Canvas.GetTop 但它们返回 NaN 令人困惑。
我刚刚尝试了 VisualTreeHelper.GetOffset ,它确实返回了一个偏移量,但是当您尝试在元素的排列方法中使用它时,它会消失,大概是因为偏移量中的值太高。
在 Wpf 之前的日子里,坐标系非常简单,我认为 wpf 使事情变得过于复杂。
如果有人只想要控件的屏幕坐标:
Point targetLoc = targetCtrl.PointToScreen(new Point(0, 0));
(这与线程的描述不匹配,但它确实与标题匹配。认为这可能有助于人们进入搜索结果)
您可以将UIElement
坐标转换为其父级。 在你的情况下,它是一种形式。 以下是返回视觉坐标的方法示例:
private Point GetPosition(Visual element) {
var positionTransform = element.TransformToAncestor(MyForm);
var areaPosition = positionTransform.Transform(new Point(0, 0));
return areaPosition;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.