为什么Bounds在WPF中的旋转矩形上返回Empty Rect?

时间:2011-08-23 14:27:52

标签: wpf

在按钮上单击我创建一个矩形并将其旋转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;
}

1 个答案:

答案 0 :(得分:0)

问题是Rectangle还没有经过布局传递,所以Rectangle.RenderSize仍然是空的。将控制权返回给WPF时,即从OnLeftButtonDown返回时,将执行布局传递。