2012-02-06 6 views
0

私は約3-4のキャンバスコントロールを持ち、それぞれに約750-1200のパスが含まれています。 ユーザーは、いくつかは彼らに変換するために必要と私はグローバルWP7:Canvas.RenderTransform値を取得できません

Canvas SelectedCanvas; 

は最初(コンストラクタで)SelectedCanvasは1つの私のキャンバスコントロールの値をとることに使用します。ボタンウィッヒについては

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

+0

私はキャンバスを回転させたいので 'RotateTransform'を使用します:) –

答えて

1

RenderTransformプロパティの既定値はTransform.Identityです。トランスフォームを適用する必要があります(例: RotateTransformをCanvasに渡してから操作することができます。

あなたは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 –

関連する問題