3

我正在尝试使用以下代码应用于对象RotateTransformRect

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 ?

4

1 回答 1

2

可能是因为您的旋转不是 90 度的倍数。对 Rect 进行变换会导致 rect 平行于 x 和 y 轴!

  • 第一种情况呈现未按照您的意愿旋转的修改矩形 - 旋转后似乎是边界框
  • 第二种情况如您所愿 - 它首先“旋转内容”,然后绘制矩形
于 2011-01-05T21:24:00.797 回答