Mega Code Archive

 
Categories / Silverlight / Animations
 

Timer triggered Animation

<UserControl x:Class='SilverlightApplication3.MainPage'     xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'      xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'     xmlns:d='http://schemas.microsoft.com/expression/blend/2008'      xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'      mc:Ignorable='d'      d:DesignWidth='640'      d:DesignHeight='480'>     <Canvas>         <Path Fill="Blue">             <Path.Data>                 <EllipseGeometry x:Name="ball1" Center="30,180" RadiusX="5" RadiusY="5" />             </Path.Data>         </Path>         <Path Stroke="LightBlue">             <Path.Data>                 <EllipseGeometry Center="180,180" RadiusX="150" RadiusY="75" />             </Path.Data>         </Path>     </Canvas> </UserControl> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace SilverlightApplication3 {     public partial class MainPage : UserControl     {         private TimeSpan lastRender;         double time = 0;         double dt = 0;         public MainPage()         {             lastRender = TimeSpan.FromTicks(DateTime.Now.Ticks);             CompositionTarget.Rendering += StartAnimation;         }         private void StartAnimation(object sender, EventArgs e)         {             RenderingEventArgs renderArgs = (RenderingEventArgs)e;             dt = (renderArgs.RenderingTime - lastRender).TotalSeconds;             lastRender = renderArgs.RenderingTime;             double x = 180 + 150 * Math.Cos(2 * time);             double y = 180 + 75 * Math.Sin(2 * time);             ball1.Center = new Point(x, y);             time += dt;          }     } }