2011-08-08 16 views
2

私はC#でアニメーションを作成する方法を学習しています。私は簡単に関数を作成することができていますイージング関数をプログラムで作成するC#

test(someObject, FrameworkElement.MarginProperty); 


/// <summary> 
     /// animate margin of an object 
     /// </summary> 
     /// <param name="target">what object do you whant to animate?</param> 
     /// <param name="property">what property do you want to animate</param> 
     public void test(DependencyObject target, DependencyProperty property) 
     { 

      ThicknessAnimation animation = new ThicknessAnimation(); 
      animation.To = new Thickness(0,0,0,0); // final value 

      //animation.From = new Thickness(50,50,50,50); 


      //make animation last 5 seconds 
      animation.BeginTime = TimeSpan.FromSeconds(0); 
      animation.Duration = TimeSpan.FromSeconds(5); 

      // set the ease function 
      BounceEase b = new BounceEase(); 
      animation.EasingFunction = b; 

      //note that I would like to add an easeIn function 


      //start animating 
      Storyboard.SetTarget(animation, target); // what object will be animated? 
      Storyboard.SetTargetProperty(animation, new PropertyPath(property)); // what property will be animated 
      Storyboard sb = new Storyboard(); 
      sb.Children.Add(animation); 
      sb.Begin(); 


     } 

注:私は例えば、オブジェクトの余白をアニメーション化していた場合、私はそれは余裕だアニメーション化するには、以下のメソッドを使用します。しかし、EaseInOutイージング関数を作成したい場合はどうすればよいですか? EaseInOutアプローチを使用してオブジェクトをアニメートするには、テストメソッドに何を追加する必要がありますか?

答えて

4

私は最終的にオブジェクトのマージンをアニメーション化するために私のメソッドを使用していると思います。

 MyStoryboards.Animations a = new MyStoryboards.Animations(); 

     // set the ease function 
     BounceEase b = new BounceEase(); 
     b.Bounces = 5; 
     b.Bounciness = 1; 
     b.EasingMode = EasingMode.EaseIn; 

     a.animThickness(tv, FrameworkElement.MarginProperty, tv.Margin, new Thickness(), TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(5), b); 

...

...

 public void animThickness(DependencyObject target, DependencyProperty property, Thickness from, Thickness to, TimeSpan beginTime, TimeSpan duration , IEasingFunction e) 
     { 
      ThicknessAnimation animation = new ThicknessAnimation(); 
      animation.To = to; // final value 

      animation.From = from; 


      animation.BeginTime = beginTime; 
      animation.Duration = duration; 


      animation.EasingFunction = e; 

      //start animating 
      Storyboard.SetTarget(animation, target); // what object will be animated? 
      Storyboard.SetTargetProperty(animation, new PropertyPath(property)); // what property will be animated 
      Storyboard sb = new Storyboard(); 
      sb.Children.Add(animation); 
      sb.Begin(); 
     } 
関連する問題