質問

申請しようとしています 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 を変換する方法はありますか? Rect.Transform(Matrix) 関数?

役に立ちましたか?

解決

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

  • 最初のケースでは、希望どおりに回転されていない変更された四角形がレンダリングされます - 回転後の境界ボックスのように見えます
  • 2 番目のケースでは、希望どおりのドットが表示されます。最初に「コンテンツを回転」し、次に四角形を描画します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top