2012-02-06 90 views
0

我有大約3-4個畫布控件,每個包含大約750-1200個路徑。 用戶需要做出一些改變他們,我用的是一個全球性的WP7:無法獲取Canvas.RenderTransform值

Canvas SelectedCanvas; 

最初(構造函數)SelectedCanvas採取的一個我的畫布控件的值。

SelectedCanvas = canvas1; 

對於按鈕旋轉至極我用一個函數的畫布:

private void RotateRightLayerButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (SelectedCanvas.RenderTransform != null) 
     { 
      //method 1 
      CompositeTransform ct = canvas1.RenderTransform as CompositeTransform; 
      if (ct.Rotation == 360)//ct will return NullException 
       ct.Rotation = 0; 
      ct.Rotation += 30; 

      // method 2 
      TransformGroup tg = canvas1.RenderTransform as TransformGroup;     
      (tg.Children[0] as RotateTransform).Angle += 30; 
      //tg will return NullException        
     } 
    } 

我也試過this linkthis link ,但我也需要得到RenderTransform值。 我做錯了什麼?提前致謝!

+1

所以它變換你在你的畫布設置?它是默認的[Transform.Identity](http://msdn.microsoft.com/en-us/library/system.windows.media.transform.identity.aspx)。 – Clemens 2012-02-06 20:16:47

+0

我使用'RotateTransform'因爲我想旋轉畫布:) – 2012-02-06 20:22:35

回答

1

RenderTransform屬性的默認值爲Transform.Identity。您必須應用轉換,例如一個RotateTransform,你可以操縱它的畫布。

如果使用RotateTransform你的代碼必須是這樣的:

RotateTransform t = bd1.RenderTransform as RotateTransform; 
if (t.Angle >= 360) 
    t.Angle = 0; 
t.Angle += 30; 

或:

RotateTransform t = bd1.RenderTransform as RotateTransform; 
t.Angle = (t.Angle + 30) % 360; 
+0

謝謝。我忘了那件事:D – 2012-02-06 20:48:09