문제

I am trying to apply RotateTransform to a Rect object with the following code.

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);

but the rectangle is not rotated. However when I push the transformation to the DrawingContext, as in the following code, rectangle is transformed correctly.

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);

Is there a way to transform a Rect as in the first code fragment with Rect.Transform(Matrix) function?

도움이 되었습니까?

해결책

Prabably because your rotation is not multiple of 90deg. Transform on Rect results in rect that it parallel to x & y axis!

  • First case renders modified rectangle that is not rotated a syou desire - seems to be bouding box after rotation
  • Second case doest what you wish - it first "rotate content", then draws rectangle
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top