Velocity animation //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Media.Animation; namespace Microsoft.Samples.PerFrameAnimations { public partial class FrameIndependentFollowExample : Page { private Vector _rectangleVelocity = new Vector(0, 0); private Point _lastMousePosition = new Point(450, 450); private TimeSpan _lastRender; public FrameIndependentFollowExample(): base() { _lastRender = TimeSpan.FromTicks(DateTime.Now.Ticks); CompositionTarget.Rendering += UpdateRectangle; } private void UpdateRectangle(object sender, EventArgs e) { RenderingEventArgs renderArgs = (RenderingEventArgs)e; Double deltaTime = (renderArgs.RenderingTime - _lastRender).TotalSeconds; _lastRender = renderArgs.RenderingTime; Point location = new Point(0,0); Vector toMouse = _lastMousePosition - location; double followForce = 1.00; _rectangleVelocity += toMouse * followForce; double drag = 0.9; _rectangleVelocity *= drag; location += _rectangleVelocity * deltaTime; Canvas.SetLeft(followRectangle, location.X); Canvas.SetTop(followRectangle, location.Y); } } }