WPF矩形变换

3
我试图使用以下代码将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)函数将一个矩形像第一个代码片段中那样进行变换?

1个回答

2

可能是因为您的旋转角度不是90度的倍数。对矩形进行变换会得到与x和y轴平行的矩形!

  • 第一种情况呈现修改后的矩形,但未按您所需的旋转 - 似乎是旋转后的边界框。
  • 第二种情况符合您的要求 - 它首先“旋转内容”,然后绘制矩形。

是的,第一个案例在旋转矩形内绘制了边界框;而在第二个案例中,则是在旋转后的矩形中绘制。因此,我想第一个案例中无法像第二个案例那样旋转矩形。 - Alp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接