Csharp/C#教程:确定WPF元素相对于某个父级的边界矩形分享


确定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 / ActualHeightRenderSize )和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

(0)
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐