Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

Control the Progress of an Animation

<Window x: Class="WpfApplication1.Window1"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   Title="" Height="300" Width="600">     <Grid>         <Rectangle x:Name="Rectangle" Height="100" Width="100" Fill="Firebrick">             <Rectangle.RenderTransform>                 <MatrixTransform x:Name="RectangleMatrixTransform" />             </Rectangle.RenderTransform>             <Rectangle.Triggers>                 <EventTrigger RoutedEvent="Rectangle.Loaded">                     <BeginStoryboard x:Name="RectangleStoryboard">                         <Storyboard x:Name="Storyboard" CurrentTimeInvalidated="Storyboard_Changed">                             <MatrixAnimationUsingPath Storyboard.TargetName="RectangleMatrixTransform" Storyboard.TargetProperty="Matrix" Duration="0:0:10"                 RepeatBehavior="Forever">                                 <MatrixAnimationUsingPath.PathGeometry>                                     <PathGeometry Figures="M -100,0 300, 0" />                                 </MatrixAnimationUsingPath.PathGeometry>                             </MatrixAnimationUsingPath>                         </Storyboard>                     </BeginStoryboard>                 </EventTrigger>             </Rectangle.Triggers>         </Rectangle>         <Slider x:Name="Seeker" Minimum="0" Maximum="1" SmallChange="0.001" ValueChanged="Seeker_ValueChanged">             <Slider.Triggers>                 <EventTrigger RoutedEvent="Slider.MouseLeftButtonDown">                     <StopStoryboard BeginStoryboardName="RectangleStoryboard" />                 </EventTrigger>                 <EventTrigger RoutedEvent="Slider.MouseLeftButtonUp">                     <ResumeStoryboard BeginStoryboardName="RectangleStoryboard" />                 </EventTrigger>             </Slider.Triggers>         </Slider>     </Grid> </Window> //File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Media.Animation Imports System.Windows.Input Namespace WpfApplication1   Public Partial Class Window1     Inherits Window     Public Sub New()       InitializeComponent()     End Sub     Private Sub Storyboard_Changed(sender As Object, e As System.EventArgs)       Dim clockGroup As ClockGroup = TryCast(sender, ClockGroup)       Dim animationClock As AnimationClock = TryCast(clockGroup.Children(0), AnimationClock)       If animationClock.CurrentProgress.HasValue Then         Seeker.Value = animationClock.CurrentProgress.Value       End If     End Sub     Private Sub Seeker_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double))       Storyboard.Seek(Rectangle, TimeSpan.FromTicks(CLng(Storyboard.Children(0).Duration.TimeSpan.Ticks * Seeker.Value)), TimeSeekOrigin.BeginTime)     End Sub   End Class End Namespace