Guillaume André

Apprentissage, étude et approfondissement des nouvelles technologies

15 Apr, 2009

Silverlight 3 : Création d’animations easing avec code C#

Posted by: Guillaume Andre In: Silverlight

En complément du post Silverlight 3 animations easing voici comment réaliser des animations Silverlight 3 entièrement côté code behind.

Le code ci-dessous permet d’animer la propriété “Canvas.Left” d’une Ellipse. Le but est uniquement d’apprendre à appliquer un effet de easing à une animation avec C#.

 

Création du Storyboard

Storyboard sb = new Storyboard();
Storyboard.SetTargetName(sb, "monEllipse");
Storyboard.SetTargetProperty(sb, new PropertyPath("(Canvas.Left)"));

Un Storyboard peut contenir une ou plusieurs animations.

Création d’une ou plusieurs animations

DoubleAnimation da = new DoubleAnimation();
da.Duration = new TimeSpan(0, 0, 2); // TimeSpan.FromSeconds()...
da.From = 0.0; // Facultatif, par défaut la valeur courante sera retenue
da.To = 180.0;

Application de l’effet Easing souhaité

ElasticEase ee = new ElasticEase(); // création de l'effet easing, ici Elastic
ee.EasingMode = EasingMode.EaseOut; // Choix du mode de easing : EaseIn, EaseInOut, ou EaseOut
da.EasingFunction = ee; // association de l'effet de easing à l'animation

Association des animations au Storyboard et ajout du storyboard aux ressources

sb.Children.Add(da);
LayoutRoot.Resources.Add("monStoryboard", sb);

Lancer l’animation, plus exactement, le Storyboard

(LayoutRoot.Resources["monStoryboard"] as Storyboard).Begin();

Animations Easing en resumé

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
lireAnimation.Click += new RoutedEventHandler(lireAnimation_Click);

Storyboard sb = new Storyboard();
Storyboard.SetTargetName(sb, "monEllipse");
Storyboard.SetTargetProperty(sb, new PropertyPath("(Canvas.Left)"));

DoubleAnimation da = new DoubleAnimation();
da.Duration = new TimeSpan(0, 0, 2);
da.From = 0.0;
da.To = 180.0;

ElasticEase ee = new ElasticEase();
ee.EasingMode = EasingMode.EaseOut;
da.EasingFunction = ee;

sb.Children.Add(da);
LayoutRoot.Resources.Add("monStoryboard", sb);
}

void lireAnimation_Click(object sender, RoutedEventArgs e)
{
(LayoutRoot.Resources["monStoryboard"] as Storyboard).Begin();
}

2 Responses to "Silverlight 3 : Création d’animations easing avec code C#"

1 | francois

April 15th, 2009 at 6:15 pm

Avatar

merci pour cette portion de code

2 | Silverlight 3 : Spiral Flip Control 3D | Guillaume André

April 21st, 2009 at 8:05 am

Avatar

[...] je vous avez pu le lire dans mes posts précédents dédiées aux animations et à la 3D il est à présent possible avec Silverlight 3 de réaliser quelques [...]

Comment Form