WPF 矩形变换

发布于 2024-10-10 16:41:58 字数 853 浏览 3 评论 0原文

我正在尝试使用以下代码将 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?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

榕城若虚 2024-10-17 16:41:58

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

  • 第一种情况渲染修改后的矩形,该矩形未按您的意愿旋转 - 旋转后似乎是鲍德框
  • 第二种情况不符合您的要求 - 它首先“旋转内容”,然后绘制矩形

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文