我正在尝试申请 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 Rect.Transform(Matrix) 功能?

有帮助吗?

解决方案

可能是因为你的旋转不是 90 度的倍数。矩形上的变换会产生与 x 和 y 轴平行的矩形!

  • 第一种情况渲染修改后的矩形,该矩形未按您的意愿旋转 - 旋转后似乎是 bouding box
  • 第二种情况符合您的要求 - 它首先“旋转内容”,然后绘制矩形
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top