1
我在我的WPF应用程序下面的代码:WPF形状矩形边框总是空
public MainWindow()
{
InitializeComponent();
p1 = new Point(50, 50);
p2 = new Point(355, 50);
p3 = new Point(50, 355);
p4 = new Point(355, 355);
Loaded += (x, y) => Draw();
//ContentRendered += (x, y) => Draw();
}
我创建了一个多边形形状,并尝试获取其边框几种方法:
private void Draw()
{
Polygon polygon = new Polygon();
polygon.Stroke = System.Windows.Media.Brushes.White;
polygon.Points.Add(p1);
polygon.Points.Add(p2);
polygon.Points.Add(p3);
polygon.Points.Add(p4);
canvas.Children.Add(polygon);
boundingRect = polygon.TransformToVisual(canvas).TransformBounds(new Rect(polygon.RenderSize));
boundingRect = polygon.TransformToVisual(polygon).TransformBounds(System.Windows.Controls.Primitives.LayoutInformation.GetLayoutSlot(polygon));
boundingRect = polygon.RenderTransform.TransformBounds(new Rect(polygon.RenderSize));
boundingRect = GetRectOfObject(polygon);
boundingRect = polygon.RenderedGeometry.Bounds;
}
private Rect GetRectOfObject(FrameworkElement _element)
{
Rect rectangleBounds = new Rect();
rectangleBounds = _element.RenderTransform.TransformBounds(new Rect(0, 0, _element.ActualWidth, _element.ActualHeight));
return rectangleBounds;
}
但是,我总是得到{0; 0; 0; 0}。
在调试,我可以看到点,但其规模呈现0:
我应该如何计算正确的方法是什么?
您可能需要调用[Measure](https://msdn.microsoft.com/en-us/library/system.windows.uielement.measure(v = vs.110).aspx)和/或[Arrange ](https://msdn.microsoft.com/en-us/library/system.windows.uielement.arrange(v = vs.110).aspx)在矩形上使其正确呈现 – ChrisF
您的意思是我应该_手动计算_形状需要的尺寸和_then_我得到边界尺寸?由于形状会动态变化,我无法分辨所需空间的大小 - 这正是我期望从WPF框架计算出来的 - 而不是我。根据生命周期事件,在加载事件后没有更多的可视化渲染,所以基本上布局应该已经准备就绪:http://www.codeproject.com/Articles/403418/Lifetime-events-of-a-WPF-application – Nestor