2012-03-15 11 views
4

私はストーリーボードの方法でこのようなことをしていますが、希望の結果を達成することはできません。このアニメーションは、ページが読み込まれた後に再生したいものです。短いそれをカットする両方の軸(X、Y)のアニメーションを同時に変換する方法は?

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     CreateTranslateAnimation(image1); 
    } 


     private void CreateTranslateAnimation(UIElement source) 
     { 
      Storyboard sb = new Storyboard(); 

      DoubleAnimationUsingKeyFrames animationFirstX = new DoubleAnimationUsingKeyFrames(); 
      source.RenderTransform = new CompositeTransform(); 
      Storyboard.SetTargetProperty(animationFirstX, new PropertyPath(CompositeTransform.TranslateXProperty)); 
      Storyboard.SetTarget(animationFirstX, source.RenderTransform); 
      animationFirstX.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = kt1, Value = 20 }); 

      DoubleAnimationUsingKeyFrames animationFirstY = new DoubleAnimationUsingKeyFrames(); 
      source.RenderTransform = new CompositeTransform(); 
      Storyboard.SetTargetProperty(animationFirstY, new PropertyPath(CompositeTransform.TranslateYProperty)); 
      Storyboard.SetTarget(animationFirstY, source.RenderTransform); 
      animationFirstY.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = kt1, Value = 30 }); 

    sb.Children.Add(animationFirstX); 
      sb.Children.Add(animationFirstY); 
      sb.Begin();    
     } 

...

は、私はあなたが二回source.RenderTransformを設定している。このコード

<Storyboard x:Name="Storyboard1"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="image1"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="20"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="image1"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="30"/> 
     </DoubleAnimationUsingKeyFrames> 
     </Storyboard> 
+0

これは、それは何をするのかは、あなたが望むものではないのですか?このコードをどのように使用しているかを示す完全な例を提供してください。 –

+2

これは画像をy軸に沿って移動するだけで、私が必要としたのは です。このコードを書くのは、diagのように両方の軸に沿って動かすことでした。例えば、(0,0)から(20,30)まではコーパスです。 animationFirstX.KeyFrames.Add(新しいEasingDoubleKeyFrame(){KeyTime = KT1、値= 20} animationFirstY.KeyFrames.Add(新しいEasingDoubleKeyFrame(){KeyTime = KT1、値= 30} に示すこれらのラインは、(参照しますコード) – user1235555

+0

xamlでアニメーションを定義して、コードにアクセスして実行時にその小道具を変更することもできます。 – Vitalij

答えて

2

には.csコードと同等を書きたいです。最初の変換アニメーションは、が実行されたときにUIElementから削除されたCompositeTransformオブジェクトを参照しています。

第2のsource.RenderTransform = new CompositeTransform();を取り除くと、より良い結果が得られます。

を「ソースがはるかにコーディング悪の源である&ペーストをカット」:)

関連する問題