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を変換する方法はありRect.Transform(Matrix)ますか?

4

1 に答える 1

2

おそらくあなたの回転は90度の倍数ではないからです。Rectで変換すると、x軸とy軸に平行になるrectになります。

  • 最初のケースでは、必要に応じて回転されていない修正された長方形がレンダリングされます-回転後のボックスのように見えます
  • 2番目のケースはあなたが望むことをしません-それは最初に「コンテンツを回転させ」、次に長方形を描きます
于 2011-01-05T21:24:00.797 に答える