2011-01-05 6 views
3

次のコードを使用してRectオブジェクトにRotateTransformを適用しようとしています。WPF Rect Transform

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を変換する方法はありますか?

答えて

2

回転が90度の倍数ではないため、 rect上のTransformは、x軸に平行なx軸になります。& y軸!

  • 最初のケースは、syouの欲求を回転させない変更矩形をレンダリングする - 回転
  • 第二ケースの後にボックスをboudingているように見えるあなたが望む何doest - それは、最初の「コンテンツを回転させる」、そして長方形
を描きます
+0

はい最初のケースは、2番目のケースで回転した長方形のバウンディングボックスを描画します。だから、最初のケースではRectを回転させるのは不可能だと思います。 –