2011-01-05 56 views
3

我试图使用下面的代码将RotateTransform应用于Rect对象。WPF Rect变换

Rect transformed = this.Rectangle; 
transformed.Transform(this.rotateTransform.Value); 
DrawingVisual visual = new DrawingVisual(); 
DrawingContext context = visual.RenderOpen(); 
context.DrawRectangle(null, new Pen(Brushes.Blue, 2), transformed); 
context.Close(); 
canvas.Children.Add(visual); 

但矩形不旋转。但是,当我将转换推向DrawingContext时,如下面的代码所示,正确地转换矩形。

Rect transformed = this.Rectangle; 
DrawingVisual visual = new DrawingVisual(); 
DrawingContext context = visual.RenderOpen(); 
context.PushTransform(this.rotateTransform); 
context.DrawRectangle(null, new Pen(Brushes.Blue, 2), transformed); 
context.Pop(); 
context.Close(); 
canvas.Children.Add(visual); 

有没有办法在第一代码片段与Rect.Transform(Matrix)函数变换矩形作为?

回答

2

因为你的旋转不是90deg的倍数。矩形上的变换结果是它与y轴平行x &!

  • 第一种情况将呈现不旋转的syou愿望修改矩形 - 似乎旋转后要bouding箱
  • 第二种情况利己你希望的东西 - 它第一个“旋转内容”,然后绘制矩形
+0

第一种情况是在第二种情况下绘制旋转矩形的边界框。所以我猜想在第一种情况下旋转Rect是不可能的。 – 2011-01-05 22:24:39