确定WPF元素相对于某个父级的边界矩形
我认为这是一个非常简单的请求,但我似乎无法在搜索中找到确凿的答案。 如何确定窗口中特定视觉元素相对于其他父元素的边界?
我尝试过使用LayoutInformation.GetLayoutSlot
但这似乎只是在0,0处返回一个Rect
,并不反映元素的实际位置。
我想要做的是使用RenderTargetBitmap
拍摄窗口的“屏幕截图”,然后将其裁剪为特定元素,但我无法获得元素的界限以知道要将位图裁剪为什么!
这很简单:
public static Rect BoundsRelativeTo(this FrameworkElement element, Visual relativeTo) { return element.TransformToVisual(relativeTo) .TransformBounds(LayoutInformation.GetLayoutSlot(element)); }
事实上,将它放在一个单独的方法中可能有点过分。
LayoutSlot选项根本不适用于我。 这最终给了我一个相对于指定的父/祖先控件的子位置:
public static Rect BoundsRelativeTo(this FrameworkElement child, Visual parent) { GeneralTransform gt = child.TransformToAncestor(parent); return gt.TransformBounds(new Rect(0, 0, child.ActualWidth, child.ActualHeight)); }
没关系,我终于设法使用LayoutInformation.GetLayoutSlot()
(虽然我可能使用ActualWidth
/ ActualHeight
或RenderSize
)和UIElement.TranslatePoint()
。
当它可以像这样简单时,似乎是一个相当复杂的解决方案:
myElement.GetBounds( relativeElement );
那好吧。 也许有时间进行扩展方法。 ?
考虑到我在这里找到的一些建议,这解决了我的问题。
上述就是C#学习教程:确定WPF元素相对于某个父级的边界矩形分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
item.TransformToVisual( relativeToElement ) .TransformBounds( new Rect( item.RenderSize ) );
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1016053.html