对于我的问题的简化版本,我想计算布局转换(可能甚至是渲染转换)形状的边界框,这样我总是能够完美地围绕形状拟合一个矩形,无论它的旋转或比例如何也许.如果你能解决这个问题,我会很高兴.
更复杂的问题是计算任何框架元素的可视边界框.通过'视觉边界框',我的意思是框架元素中最顶部的可见像素决定了上限,最右边的可见像素决定了右边界等等.如果你能解决这个问题,我会更开心.
我尝试过使用LayoutInformation.GetLayoutSlot(),但这并不是以预期的方式工作.'布局槽'实际上比实际边界大很多.我也尝试使用VisualTreeHelper.GetDescendantBounds(),但由于我的测试形状的VisualParent受到保护,我无法访问此属性,并决定在我进一步进入之前检查这里.
我希望有人可以提供一种简单的方法来获取WPF中元素的真实可视边界框,这是在所有变换之后计算的.如果我在问题中没有说清楚,请告诉我.
小智 9
private Rect GetRectOfObject(FrameworkElement _element)
{
Rect rectangleBounds = new Rect();
rectangleBounds = _element.RenderTransform.TransformBounds(new Rect(0, 0, _element.Width, _element.Height));
return rectangleBounds;
}
Run Code Online (Sandbox Code Playgroud)
也许这会有所帮助.
您将获得良好的结果,VisualTreeHelper.GetDescendantBounds()并且可以使用它VisualTreeHelper.GetParent()来访问受其他保护的VisualParent财产。然而,您可能想要做的是调用GetDescendantBounds形状本身,而不是其父级,因为无论其名称如何,该方法都会返回父级及其所有后代的边界。