2011-01-05 66 views
3

我試圖使用下面的代碼將RotateTransform應用於Rect對象。WPF 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)函數變換矩形作爲?

回答

2

因爲你的旋轉不是90deg的倍數。矩形上的變換結果是它與y軸平行x &!

  • 第一種情況將呈現不旋轉的syou願望修改矩形 - 似乎旋轉後要bouding箱
  • 第二種情況利己你希望的東西 - 它第一個「旋轉內容」,然後繪製矩形
+0

第一種情況是在第二種情況下繪製旋轉矩形的邊界框。所以我猜想在第一種情況下旋轉Rect是不可能的。 – 2011-01-05 22:24:39