WPF矩形变换

时间:2011-01-05 20:08:22

标签: wpf matrix transform rect

我正在尝试使用以下代码将RotateTransform应用于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)函数在第一个代码片段中那样转换Rect?

1 个答案:

答案 0 :(得分:2)

可怜,因为你的轮换不是90度的倍数。 Rect上的Transform会导致rect与x& y轴!

  • 第一种情况下呈现未旋转的修改过的矩形 - 旋转后似乎是一个晃动框
  • 第二种情况你想做什么 - 首先“旋转内容”,然后绘制矩形