在按钮上单击我创建一个矩形并将其旋转45度。然后我将它添加到画布上。现在一旦创建了矩形,我尝试获取其边界但它返回null。请让我知道为什么?以及如何纠正以下问题:
private void OnLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Rectangle rectangle = new Rectangle();
rectangle.Width = 100;
rectangle.Height = 200;
rectangle.RenderTransform = new RotateTransform( 45, rectangle.Width / 2, rectangle.Height / 2);
rectangle.Fill = Brushes.RoyalBlue;
Canvas.SetLeft(rectangle,100);
Canvas.SetTop(rectangle, 100);
myCanvas.Children.Add(rectangle);
//re has empty values
Rect re = GetBounds(rectangle, myCanvas);
}
public Rect GetBounds(FrameworkElement of, FrameworkElement from)
{
Rect bounds = of.TransformToVisual(from).TransformBounds(new Rect(of.RenderSize));
return bounds;
}
答案 0 :(得分:0)
问题是Rectangle还没有经过布局传递,所以Rectangle.RenderSize
仍然是空的。将控制权返回给WPF时,即从OnLeftButtonDown返回时,将执行布局传递。