Compartir vía


Cómo: Buscar un guión gráfico de forma sincrónica

En el ejemplo siguiente se muestra cómo usar el método SeekAlignedToLastTick de Storyboard para buscar cualquier posición en la animación de un guion gráfico de forma sincrónica.

Marcado XAML

A continuación se muestra el marcado XAML para el ejemplo.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.SeekStoryboardSynchronouslyExample">
  <StackPanel Margin="20" >

    <Rectangle Name="myRectangle"
      Width="10" Height="20" Fill="#AA3333FF" HorizontalAlignment="Left" >
      <Rectangle.Triggers>
        <EventTrigger RoutedEvent="Rectangle.Loaded">
          <BeginStoryboard Name="myBeginStoryboard">
            <Storyboard Name="myStoryboard" Duration="0:0:4">
              <DoubleAnimation 
                Storyboard.TargetName="myRectangle" 
                Storyboard.TargetProperty="Width" 
                Duration="0:0:4" From="10" To="500"/>
            </Storyboard>

          </BeginStoryboard>
        </EventTrigger>
      </Rectangle.Triggers>
    </Rectangle>

    <!-- Use this slider to seek to different points of the Storyboard Duration 
         (in milliseconds). -->
    <Slider Name="SeekSlider" ValueChanged="OnSliderValueChanged" Height="Auto" 
    Width="500" Minimum="0" Maximum="4000" HorizontalAlignment="Left" />

    <!-- TextBlock displays the current time position of the Storyboard in milliseconds. -->
    <TextBlock Name="PositionTextBlock"/>
  </StackPanel>
</Page>

Código

El siguiente es el código utilizado con el código XAML anterior.

using System;
using System.Media;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Animation;

namespace SDKSample
{

    public partial class SeekStoryboardSynchronouslyExample : Page
    {
        private void OnSliderValueChanged(object sender, RoutedEventArgs e)
        {
            int sliderValue = (int)SeekSlider.Value;

            // The SeekAlignedToLastTick method should be used to seek a Storyboard synchronously.
            myStoryboard.SeekAlignedToLastTick(myRectangle, new TimeSpan(0, 0, 0, 0, sliderValue), TimeSeekOrigin.BeginTime);
            PositionTextBlock.Text = sliderValue.ToString();
        }
    }
}

Imports System.Media
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media.Animation

Namespace SDKSample

    Partial Public Class SeekStoryboardSynchronouslyExample
        Inherits Page
        Private Sub OnSliderValueChanged(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim sliderValue As Integer = CInt(SeekSlider.Value)

            ' The SeekAlignedToLastTick method should be used to seek a Storyboard synchronously.
            myStoryboard.SeekAlignedToLastTick(myRectangle, New TimeSpan(0, 0, 0, 0, sliderValue), TimeSeekOrigin.BeginTime)
            PositionTextBlock.Text = sliderValue.ToString()
        End Sub
    End Class

End Namespace