Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

Velocity animation

<Page x: Class="Microsoft.Samples.PerFrameAnimations.FrameIndependentFollowExample"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">   <Canvas x:Name="containerCanvas" Background="Transparent">     <Rectangle x:Name="followRectangle" Canvas.Left="0" Canvas.Top="0"        Fill="red" Width="50" Height="50" />   </Canvas> </Page> //File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Data Imports System.Windows.Documents Imports System.Windows.Media Imports System.Windows.Navigation Imports System.Windows.Shapes Imports System.Windows.Media.Animation Namespace Microsoft.Samples.PerFrameAnimations   Public Partial Class FrameIndependentFollowExample     Inherits Page     Private _rectangleVelocity As New Vector(0, 0)     Private _lastMousePosition As New Point(500, 500)     Private _lastRender As TimeSpan     Public Sub New()       MyBase.New()       _lastRender = TimeSpan.FromTicks(DateTime.Now.Ticks)       AddHandler CompositionTarget.Rendering, AddressOf UpdateRectangle     End Sub     Private Sub UpdateRectangle(sender As Object, e As EventArgs)       Dim renderArgs As RenderingEventArgs = DirectCast(e, RenderingEventArgs)       Dim deltaTime As [Double] = (renderArgs.RenderingTime - _lastRender).TotalSeconds       _lastRender = renderArgs.RenderingTime       Dim location As New Point(0, 0)       Dim toMouse As Vector = _lastMousePosition - location       Dim followForce As Double = 1.0       _rectangleVelocity += toMouse * followForce       Dim drag As Double = 0.9       _rectangleVelocity *= drag       location += _rectangleVelocity * deltaTime       Canvas.SetLeft(followRectangle, location.X)       Canvas.SetTop(followRectangle, location.Y)     End Sub   End Class End Namespace