Animating UI Elements with Keyframes : SplineDoubleKeyFrame « Animations « Silverlight






Animating UI Elements with Keyframes

Animating UI Elements with Keyframes
 

<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'>
  <UserControl.Resources>
    <Storyboard x:Name="BouncingBallStoryboard">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
        <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
        <SplineDoubleKeyFrame KeyTime="00:00:01" Value="272">
          <SplineDoubleKeyFrame.KeySpline>
            <KeySpline ControlPoint1="0,0" ControlPoint2="1,0"/>
          </SplineDoubleKeyFrame.KeySpline>
        </SplineDoubleKeyFrame>
        <SplineDoubleKeyFrame KeyTime="00:00:01.2" Value="200">
          <SplineDoubleKeyFrame.KeySpline>
            <KeySpline ControlPoint1="0,0" ControlPoint2="0,0"/>
          </SplineDoubleKeyFrame.KeySpline>
        </SplineDoubleKeyFrame>
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Name="MultipleAnimations">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse2" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
        <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
        <SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="258"/>
        <SplineDoubleKeyFrame KeyTime="00:00:02.6000000" Value="8"/>
      </DoubleAnimationUsingKeyFrames>
      <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse2" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
        <SplineColorKeyFrame KeyTime="00:00:00" Value="#FFFF0000"/>
        <SplineColorKeyFrame KeyTime="00:00:01.5000000" Value="#3F00FDFD"/>
        <SplineColorKeyFrame KeyTime="00:00:02.6000000" Value="#FFFF0000"/>
      </ColorAnimationUsingKeyFrames>
      <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
        <SplineColorKeyFrame KeyTime="00:00:00" Value="#FFFFFF00"/>
        <SplineColorKeyFrame KeyTime="00:00:01.5000000" Value="#FFFFA500"/>
        <SplineColorKeyFrame KeyTime="00:00:02.6000000" Value="#FFFFA500"/>
        <SplineColorKeyFrame KeyTime="00:00:04" Value="#FF000080"/>
      </ColorAnimationUsingKeyFrames>
    </Storyboard>
  </UserControl.Resources>
  <StackPanel>
    <Ellipse Height="70" HorizontalAlignment="Stretch" Margin="49,43,66,0" VerticalAlignment="Top" Fill="#FF0000FF" Stroke="#FF000000" x:Name="ellipse" RenderTransformOrigin="0.5,0.5">
      <Ellipse.RenderTransform>
        <TransformGroup>
          <ScaleTransform/>
          <SkewTransform/>
          <RotateTransform/>
          <TranslateTransform/>
        </TransformGroup>
      </Ellipse.RenderTransform>
    </Ellipse>

    <Rectangle Height="15.23" HorizontalAlignment="Stretch" Margin="0,0,0,0" 
      VerticalAlignment="Bottom" Fill="#FF3A3A3F" 
      d:LayoutOverrides="Height"/>
    <Rectangle Height="14.508" HorizontalAlignment="Left" 
      Margin="0,113,0,0" VerticalAlignment="Top" Width="49.56" 
      Fill="#FF352424" d:LayoutOverrides="Width, Height"/>
    <Button Height="28" HorizontalAlignment="Stretch" 
      Margin="4,4,4,0" VerticalAlignment="Top" Content="Click to Drop the Ball"
      Click="Button_Click"/>
    <Rectangle Height="70" HorizontalAlignment="Left" 
      Margin="37,43,0,0" VerticalAlignment="Top" Width="70"
      Grid.Column="1" Fill="#FF00FFFF" Stroke="#FF000000" x:Name="rectangle" 
      RenderTransformOrigin="0.5,0.5">
      <Rectangle.RenderTransform>
        <TransformGroup>
          <ScaleTransform/>
          <SkewTransform/>
          <RotateTransform/>
          <TranslateTransform/>
        </TransformGroup>
      </Rectangle.RenderTransform>
    </Rectangle>
    <Ellipse Height="70" HorizontalAlignment="Stretch" 
      Margin="145,43,199,0" VerticalAlignment="Top" 
      Fill="#FFFFFF00" Stroke="#FF000000" Width="70" 
      x:Name="ellipse1" RenderTransformOrigin="0.5,0.5">
      <Ellipse.RenderTransform>
        <TransformGroup>
          <ScaleTransform/>
          <SkewTransform/>
          <RotateTransform/>
          <TranslateTransform/>
        </TransformGroup>
      </Ellipse.RenderTransform>
    </Ellipse>
    <Ellipse HorizontalAlignment="Right" Margin="0,43,85,0" 
       VerticalAlignment="Top" Fill="#FFFF0000" Stroke="#FF000000"
       Width="70" Height="70" x:Name="ellipse2" RenderTransformOrigin="0.5,0.5">
      <Ellipse.RenderTransform>
        <TransformGroup>
          <ScaleTransform/>
          <SkewTransform/>
          <RotateTransform/>
          <TranslateTransform/>
        </TransformGroup>
      </Ellipse.RenderTransform>
    </Ellipse>
    <Button Height="28" HorizontalAlignment="Left" Margin="4,4,0,0" 
       VerticalAlignment="Top" Width="151"
       Content="Start Multi-Animation" Click="Button_Click_1"/>
  </StackPanel>
</UserControl>

//File: Page.xaml.cs
using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication3
{
  public partial class MainPage : UserControl
  {
    public MainPage()
    {
      InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
      BouncingBallStoryboard.Begin();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
      MultipleAnimations.Begin();
    }
  }
}

   
  








Related examples in the same category