Partager via


Storyboard.SeekAlignedToLastTick Méthode

Définition

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

Surcharges

SeekAlignedToLastTick(FrameworkContentElement, TimeSpan, TimeSeekOrigin)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

SeekAlignedToLastTick(FrameworkElement, TimeSpan, TimeSeekOrigin)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

SeekAlignedToLastTick(TimeSpan)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

SeekAlignedToLastTick(TimeSpan, TimeSeekOrigin)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

SeekAlignedToLastTick(FrameworkContentElement, TimeSpan, TimeSeekOrigin)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

public:
 void SeekAlignedToLastTick(System::Windows::FrameworkContentElement ^ containingObject, TimeSpan offset, System::Windows::Media::Animation::TimeSeekOrigin origin);
public void SeekAlignedToLastTick (System.Windows.FrameworkContentElement containingObject, TimeSpan offset, System.Windows.Media.Animation.TimeSeekOrigin origin);
member this.SeekAlignedToLastTick : System.Windows.FrameworkContentElement * TimeSpan * System.Windows.Media.Animation.TimeSeekOrigin -> unit
Public Sub SeekAlignedToLastTick (containingObject As FrameworkContentElement, offset As TimeSpan, origin As TimeSeekOrigin)

Paramètres

containingObject
FrameworkContentElement

Objet spécifié quand la méthode Begin(FrameworkContentElement, Boolean) a été appelée. Cet objet contient les objets Clock créés pour ce plan conceptuel et ses enfants.

offset
TimeSpan

Valeur positive ou négative qui décrit la valeur du déplacement de la chronologie vers l’avant ou vers l’arrière par rapport à l’origin spécifiée.

origin
TimeSeekOrigin

Position à partir de laquelle offset est appliqué.

Exemples

L’exemple suivant montre à la fois les Seek méthodes et SeekAlignedToLastTick .

/*
    This example shows how to control
    a storyboard after it has started.

*/

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

namespace Microsoft.Samples.Animation.AnimatingWithStoryboards
{
    public partial class FrameworkContentElementSeekExample : FlowDocument
    {
    
        private Storyboard myStoryboard;
        private TextBlock currentTimeIndicator;
        private TextBox seekDestination;
        private TextBlock rectangleWidthIndicator;
        private Rectangle myRectangle;
        
        public FrameworkContentElementSeekExample()
        {
        
            // Create a name scope for the page.
            NameScope.SetNameScope(this, new NameScope());        
        
            this.Background = Brushes.White;

            BlockUIContainer controlsContainer = new BlockUIContainer();  

            StackPanel myStackPanel = new StackPanel();
            myStackPanel.Margin = new Thickness(20);
            
            // Create a rectangle.
            myRectangle = new Rectangle();
            myRectangle.Width = 100;
            myRectangle.Height = 20;
            myRectangle.Margin = new Thickness(12,0,0,5);
            myRectangle.Fill = new SolidColorBrush(Color.FromArgb(170, 51, 51, 255));
            myRectangle.HorizontalAlignment = HorizontalAlignment.Left;
            myStackPanel.Children.Add(myRectangle);
            
            // Assign the rectangle a name by 
            // registering it with the page, so that
            // it can be targeted by storyboard
            // animations.
            this.RegisterName("myRectangle", myRectangle);           
            
            //
            // Create an animation and a storyboard to animate the
            // rectangle.
            //
            DoubleAnimation myDoubleAnimation = 
                new DoubleAnimation(100, 500, new Duration(TimeSpan.FromSeconds(60)));            
            Storyboard.SetTargetName(myDoubleAnimation, "myRectangle");
            Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath(Rectangle.WidthProperty));
            myStoryboard = new Storyboard();
            myStoryboard.Children.Add(myDoubleAnimation);
            
            //
            // Create some buttons to control the storyboard
            // and a panel to contain them.
            //
            StackPanel buttonPanel = new StackPanel();
            Button beginButton = new Button();
            beginButton.Content = "Begin";
            beginButton.Click += new RoutedEventHandler(beginButton_Clicked);            
            buttonPanel.Children.Add(beginButton);
            Button pauseButton = new Button();
            pauseButton.Content = "Pause";
            pauseButton.Click +=new RoutedEventHandler(pauseButton_Clicked);
            buttonPanel.Children.Add(pauseButton);
            Button resumeButton = new Button();
            resumeButton.Content = "Resume";
            resumeButton.Click +=new RoutedEventHandler(resumeButton_Clicked);
            buttonPanel.Children.Add(resumeButton);
            Button skipToFillButton = new Button();
            skipToFillButton.Content = "Skip to Fill";
            skipToFillButton.Click +=new RoutedEventHandler(skipToFillButton_Clicked);
            buttonPanel.Children.Add(skipToFillButton);
            Button setSpeedRatioButton = new Button();
            setSpeedRatioButton.Content = "Triple Speed";
            setSpeedRatioButton.Click +=new RoutedEventHandler(setSpeedRatioButton_Clicked);
            buttonPanel.Children.Add(setSpeedRatioButton);
            Button stopButton = new Button();
            stopButton.Content = "Stop";
            stopButton.Click +=new RoutedEventHandler(stopButton_Clicked);
            buttonPanel.Children.Add(stopButton);
            Button removeButton = new Button();
            removeButton.Content = "Remove";
            removeButton.Click +=new RoutedEventHandler(removeButton_Clicked);
            buttonPanel.Children.Add(removeButton);            
            
            myStackPanel.Children.Add(buttonPanel);    
            
            // Create some controls to display the
            // storyboard's current time and the
            // current width of the rectangle.
            StackPanel seekPanel = new StackPanel();
            seekPanel.Margin = new Thickness(10);
            StackPanel aPanel = new StackPanel();
            Label aLabel = new Label();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel.Content = "Current Time: ";
            aPanel.Children.Add(aLabel);
            currentTimeIndicator = new TextBlock();
            aPanel.Children.Add(currentTimeIndicator);
            seekPanel.Children.Add(aPanel);
            
            aPanel = new StackPanel();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel = new Label();
            aLabel.Content = "Rectangle Width: ";
            aPanel.Children.Add(aLabel);
            rectangleWidthIndicator = new TextBlock();
            rectangleWidthIndicator.Text = myRectangle.Width.ToString(); 
            aPanel.Children.Add(rectangleWidthIndicator);
            seekPanel.Children.Add(aPanel);

            // Create some controls to enable the
            // user to specify a seek position.
            
            aPanel = new StackPanel();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel = new Label();
            aLabel.Content = "Seek Offset: " ;
            aPanel.Children.Add(aLabel);
            seekDestination = new TextBox();
            seekDestination.Text = "0";
            aPanel.Children.Add(seekDestination);       
            seekPanel.Children.Add(aPanel);

            Button seekButton = new Button();
            seekButton.Content = "Seek";
            seekButton.Click += new RoutedEventHandler(seekButton_Clicked);
            seekPanel.Children.Add(seekButton);
            Button seekAlignedToLastTickButton = new Button();
            seekAlignedToLastTickButton.Content = "Seek Aligned to Last Tick";
            seekAlignedToLastTickButton.Click += new RoutedEventHandler(seekAlignedToLastTickButton_Clicked);
            seekPanel.Children.Add(seekAlignedToLastTickButton);           
            
            myStackPanel.Children.Add(seekPanel);
            
            controlsContainer.Child = myStackPanel;
            this.Blocks.Add(controlsContainer);
            
            myStoryboard.CurrentTimeInvalidated += new EventHandler(myStoryboard_CurrentTimeInvalidated);
        }
        
        // Begins the storyboard.
        private void beginButton_Clicked(object sender, RoutedEventArgs args)
        {
            // Specifying "true" as the second Begin parameter
            // makes this storyboard controllable.
            myStoryboard.Begin(this, true);          
        }
        
        // Pauses the storyboard.
        private void pauseButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Pause(this);          
        }
        
        // Resumes the storyboard.
        private void resumeButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Resume(this);          
        }     
        
        // Advances the storyboard to its fill period.
        private void skipToFillButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.SkipToFill(this);          
        } 
        
        // Updates the storyboard's speed.
        private void setSpeedRatioButton_Clicked(object sender, RoutedEventArgs args)
        {
            // Makes the storyboard progress three times as fast as normal.
            myStoryboard.SetSpeedRatio(this, 3);          
        }           
        
        // Stops the storyboard.
        private void stopButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Stop(this);          
        }         
        
        // Removes the storyboard.
        private void removeButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Remove(this);          
        }        
        
        private void seekButton_Clicked(object sender, RoutedEventArgs args)
        {
            try {

                TimeSpan seekTime = TimeSpan.Parse(seekDestination.Text);
                myStoryboard.Seek(this, seekTime, TimeSeekOrigin.BeginTime);
                
                // The rectangle width will probably not be at its new
                // value when this call is made, because the storyboard's
                // clock probably hasn't ticked yet.
                rectangleWidthIndicator.Text = myRectangle.Width.ToString();
            }catch(FormatException ex)
            {
                MessageBox.Show("Invalid TimeSpan value.");
                seekDestination.Focus();
            }
        }
        
        private void seekAlignedToLastTickButton_Clicked(object sender, RoutedEventArgs args)
        {

            try {

                TimeSpan seekTime = TimeSpan.Parse(seekDestination.Text);
                myStoryboard.SeekAlignedToLastTick(this, seekTime, TimeSeekOrigin.BeginTime);
                
                // The rectangle width will be at its new
                // value when this call is made, because SeekAlignedToLastTick 
                // operation immediately updates timeline and animation
                // values.          
                rectangleWidthIndicator.Text = myRectangle.Width.ToString();
            }catch(FormatException ex)
            {
                MessageBox.Show("Invalid TimeSpan value.");
                seekDestination.Focus();
            }    
        }
        
        private void myStoryboard_CurrentTimeInvalidated(object sender, EventArgs e)
        {
        
            currentTimeIndicator.Text = myStoryboard.GetCurrentTime(this).ToString();
        }
    }
}
'
'    This example shows how to control
'    a storyboard after it has started.
'
'


Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media
Imports System.Windows.Shapes
Imports System.Windows.Media.Animation
Imports System.Windows.Documents



Namespace Microsoft.Samples.Animation.AnimatingWithStoryboards
    Partial Public Class FrameworkContentElementSeekExample
        Inherits FlowDocument

        Private myStoryboard As Storyboard
        Private currentTimeIndicator As TextBlock
        Private seekDestination As TextBox
        Private rectangleWidthIndicator As TextBlock
        Private myRectangle As Rectangle

        Public Sub New()

            ' Create a name scope for the page.
            NameScope.SetNameScope(Me, New NameScope())

            Me.Background = Brushes.White

            Dim controlsContainer As New BlockUIContainer()

            Dim myStackPanel As New StackPanel()
            myStackPanel.Margin = New Thickness(20)

            ' Create a rectangle.
            myRectangle = New Rectangle()
            myRectangle.Width = 100
            myRectangle.Height = 20
            myRectangle.Margin = New Thickness(12,0,0,5)
            myRectangle.Fill = New SolidColorBrush(Color.FromArgb(170, 51, 51, 255))
            myRectangle.HorizontalAlignment = HorizontalAlignment.Left
            myStackPanel.Children.Add(myRectangle)

            ' Assign the rectangle a name by 
            ' registering it with the page, so that
            ' it can be targeted by storyboard
            ' animations.
            Me.RegisterName("myRectangle", myRectangle)

            '
            ' Create an animation and a storyboard to animate the
            ' rectangle.
            '
            Dim myDoubleAnimation As New DoubleAnimation(100, 500, New Duration(TimeSpan.FromSeconds(60)))
            Storyboard.SetTargetName(myDoubleAnimation, "myRectangle")
            Storyboard.SetTargetProperty(myDoubleAnimation, New PropertyPath(Rectangle.WidthProperty))
            myStoryboard = New Storyboard()
            myStoryboard.Children.Add(myDoubleAnimation)

            '
            ' Create some buttons to control the storyboard
            ' and a panel to contain them.
            '
            Dim buttonPanel As New StackPanel()
            Dim beginButton As New Button()
            beginButton.Content = "Begin"
            AddHandler beginButton.Click, AddressOf beginButton_Clicked
            buttonPanel.Children.Add(beginButton)
            Dim pauseButton As New Button()
            pauseButton.Content = "Pause"
            AddHandler pauseButton.Click, AddressOf pauseButton_Clicked
            buttonPanel.Children.Add(pauseButton)
            Dim resumeButton As New Button()
            resumeButton.Content = "Resume"
            AddHandler resumeButton.Click, AddressOf resumeButton_Clicked
            buttonPanel.Children.Add(resumeButton)
            Dim skipToFillButton As New Button()
            skipToFillButton.Content = "Skip to Fill"
            AddHandler skipToFillButton.Click, AddressOf skipToFillButton_Clicked
            buttonPanel.Children.Add(skipToFillButton)
            Dim setSpeedRatioButton As New Button()
            setSpeedRatioButton.Content = "Triple Speed"
            AddHandler setSpeedRatioButton.Click, AddressOf setSpeedRatioButton_Clicked
            buttonPanel.Children.Add(setSpeedRatioButton)
            Dim stopButton As New Button()
            stopButton.Content = "Stop"
            AddHandler stopButton.Click, AddressOf stopButton_Clicked
            buttonPanel.Children.Add(stopButton)
            Dim removeButton As New Button()
            removeButton.Content = "Remove"
            AddHandler removeButton.Click, AddressOf removeButton_Clicked
            buttonPanel.Children.Add(removeButton)

            myStackPanel.Children.Add(buttonPanel)

            ' Create some controls to display the
            ' storyboard's current time and the
            ' current width of the rectangle.
            Dim seekPanel As New StackPanel()
            seekPanel.Margin = New Thickness(10)
            Dim aPanel As New StackPanel()
            Dim aLabel As New Label()
            aPanel.Orientation = Orientation.Horizontal
            aLabel.Content = "Current Time: "
            aPanel.Children.Add(aLabel)
            currentTimeIndicator = New TextBlock()
            aPanel.Children.Add(currentTimeIndicator)
            seekPanel.Children.Add(aPanel)

            aPanel = New StackPanel()
            aPanel.Orientation = Orientation.Horizontal
            aLabel = New Label()
            aLabel.Content = "Rectangle Width: "
            aPanel.Children.Add(aLabel)
            rectangleWidthIndicator = New TextBlock()
            rectangleWidthIndicator.Text = myRectangle.Width.ToString()
            aPanel.Children.Add(rectangleWidthIndicator)
            seekPanel.Children.Add(aPanel)


            ' Create some controls to enable the
            ' user to specify a seek position.

            aPanel = New StackPanel()
            aPanel.Orientation = Orientation.Horizontal
            aLabel = New Label()
            aLabel.Content = "Seek Offset: "
            aPanel.Children.Add(aLabel)
            seekDestination = New TextBox()
            seekDestination.Text = "0"
            aPanel.Children.Add(seekDestination)
            seekPanel.Children.Add(aPanel)


            Dim seekButton As New Button()
            seekButton.Content = "Seek"
            AddHandler seekButton.Click, AddressOf seekButton_Clicked
            seekPanel.Children.Add(seekButton)
            Dim seekAlignedToLastTickButton As New Button()
            seekAlignedToLastTickButton.Content = "Seek Aligned to Last Tick"
            AddHandler seekAlignedToLastTickButton.Click, AddressOf seekAlignedToLastTickButton_Clicked
            seekPanel.Children.Add(seekAlignedToLastTickButton)

            myStackPanel.Children.Add(seekPanel)

            controlsContainer.Child = myStackPanel
            Me.Blocks.Add(controlsContainer)

            AddHandler myStoryboard.CurrentTimeInvalidated, AddressOf myStoryboard_CurrentTimeInvalidated
        End Sub

        ' Begins the storyboard.
        Private Sub beginButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
            ' Specifying "true" as the second Begin parameter
            ' makes this storyboard controllable.
            myStoryboard.Begin(Me, True)

        End Sub

        ' Pauses the storyboard.
        Private Sub pauseButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Pause(Me)

        End Sub

        ' Resumes the storyboard.
        Private Sub resumeButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Resume(Me)

        End Sub

        ' Advances the storyboard to its fill period.
        Private Sub skipToFillButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.SkipToFill(Me)

        End Sub

        ' Updates the storyboard's speed.
        Private Sub setSpeedRatioButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
            ' Makes the storyboard progress three times as fast as normal.
            myStoryboard.SetSpeedRatio(Me, 3)

        End Sub

        ' Stops the storyboard.
        Private Sub stopButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Stop(Me)

        End Sub

        ' Removes the storyboard.
        Private Sub removeButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Remove(Me)

        End Sub

        Private Sub seekButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
            Try


                Dim seekTime As TimeSpan = TimeSpan.Parse(seekDestination.Text)
                myStoryboard.Seek(Me, seekTime, TimeSeekOrigin.BeginTime)

                ' The rectangle width will probably not be at its new
                ' value when this call is made, because the storyboard's
                ' clock probably hasn't ticked yet.
                rectangleWidthIndicator.Text = myRectangle.Width.ToString()

            Catch ex As FormatException
                MessageBox.Show("Invalid TimeSpan value.")
                seekDestination.Focus()
            End Try
        End Sub

        Private Sub seekAlignedToLastTickButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)

            Try


                Dim seekTime As TimeSpan = TimeSpan.Parse(seekDestination.Text)
                myStoryboard.SeekAlignedToLastTick(Me, seekTime, TimeSeekOrigin.BeginTime)

                ' The rectangle width will be at its new
                ' value when this call is made, because SeekAlignedToLastTick 
                ' operation immediately updates timeline and animation
                ' values.          
                rectangleWidthIndicator.Text = myRectangle.Width.ToString()

            Catch ex As FormatException
                MessageBox.Show("Invalid TimeSpan value.")
                seekDestination.Focus()
            End Try
        End Sub

        Private Sub myStoryboard_CurrentTimeInvalidated(ByVal sender As Object, ByVal e As EventArgs)

            currentTimeIndicator.Text = myStoryboard.GetCurrentTime(Me).ToString()

        End Sub



    End Class
End Namespace

Remarques

SeekAlignedToLastTick aligne l’heure recherchée du Storyboard avec le dernier graduation d’horloge. Les valeurs sont immédiatement mises à jour pour refléter les modifications dues à SeekAlignedToLastTick, même si l’écran ne reflète pas ces modifications tant que l’écran n’est pas mis à jour.

Notez que les opérations de recherche ne prennent pas en compte les paramètres du storyboard ou SlipBehavior du SpeedRatio storyboard. Le storyboard est traité comme s’il avait une SpeedRatio valeur de 1 et aucune SlipBehavior.

Cette méthode remplace l’horloge du CurrentState storyboard par

Active.

La recherche d’un storyboard déclenche les CurrentGlobalSpeedInvalidated événements et CurrentStateInvalidated .

Pour contrôler ce storyboard de manière interactive, vous devez utiliser le même containingObject paramètre lors de l’appel des méthodes interactives que vous avez utilisées pour commencer le storyboard. Un storyboard contrôlable peut suspendre, reprendre, rechercher, arrêter et être supprimé. Pour rendre un storyboard contrôlable dans le code, vous devez utiliser la surcharge appropriée de la méthode du Begin storyboard et spécifier true pour la rendre contrôlable. Pour obtenir un exemple, consultez Guide pratique pour contrôler un storyboard après son démarrage.

S’applique à

SeekAlignedToLastTick(FrameworkElement, TimeSpan, TimeSeekOrigin)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

public:
 void SeekAlignedToLastTick(System::Windows::FrameworkElement ^ containingObject, TimeSpan offset, System::Windows::Media::Animation::TimeSeekOrigin origin);
public void SeekAlignedToLastTick (System.Windows.FrameworkElement containingObject, TimeSpan offset, System.Windows.Media.Animation.TimeSeekOrigin origin);
member this.SeekAlignedToLastTick : System.Windows.FrameworkElement * TimeSpan * System.Windows.Media.Animation.TimeSeekOrigin -> unit
Public Sub SeekAlignedToLastTick (containingObject As FrameworkElement, offset As TimeSpan, origin As TimeSeekOrigin)

Paramètres

containingObject
FrameworkElement

Objet spécifié quand la méthode Begin(FrameworkElement, Boolean) a été appelée. Cet objet contient les objets Clock créés pour ce plan conceptuel et ses enfants.

offset
TimeSpan

Valeur positive ou négative qui décrit la valeur du déplacement de la chronologie vers l’avant ou vers l’arrière par rapport à l’origin spécifiée.

origin
TimeSeekOrigin

Position à partir de laquelle offset est appliqué.

Exemples

L’exemple suivant montre à la fois les Seek méthodes et SeekAlignedToLastTick .

/*
    This example shows how to seek a storyboard.

*/

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

namespace Microsoft.Samples.Animation.AnimatingWithStoryboards
{
    public partial class SeekExample : Page
    {
    
        private Storyboard myStoryboard;
        private TextBlock currentTimeIndicator;
        private TextBox seekDestination;
        private TextBlock rectangleWidthIndicator;
        private Rectangle myRectangle;
        
        public SeekExample()
        {
        
            // Create a name scope for the page.
            NameScope.SetNameScope(this, new NameScope());        
        
            this.WindowTitle = "Controlling a Storyboard";
            this.Background = Brushes.White;

            StackPanel myStackPanel = new StackPanel();
            myStackPanel.Margin = new Thickness(20);
            
            // Create a rectangle.
            myRectangle = new Rectangle();
            myRectangle.Width = 100;
            myRectangle.Height = 20;
            myRectangle.Margin = new Thickness(12,0,0,5);
            myRectangle.Fill = new SolidColorBrush(Color.FromArgb(170, 51, 51, 255));
            myRectangle.HorizontalAlignment = HorizontalAlignment.Left;
            myStackPanel.Children.Add(myRectangle);
            
            // Assign the rectangle a name by 
            // registering it with the page, so that
            // it can be targeted by storyboard
            // animations.
            this.RegisterName("myRectangle", myRectangle);           
            
            //
            // Create an animation and a storyboard to animate the
            // rectangle.
            //
            DoubleAnimation myDoubleAnimation = 
                new DoubleAnimation(100, 500, new Duration(TimeSpan.FromSeconds(60)));            
            Storyboard.SetTargetName(myDoubleAnimation, "myRectangle");
            Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath(Rectangle.WidthProperty));
            myStoryboard = new Storyboard();
            myStoryboard.Children.Add(myDoubleAnimation);
            
            //
            // Create some buttons to control the storyboard
            // and a panel to contain them.
            //
            StackPanel buttonPanel = new StackPanel();
            buttonPanel.Orientation = Orientation.Horizontal;
            Button beginButton = new Button();
            beginButton.Content = "Begin";
            beginButton.Click += new RoutedEventHandler(beginButton_Clicked);            
            buttonPanel.Children.Add(beginButton);
            Button pauseButton = new Button();
            pauseButton.Content = "Pause";
            pauseButton.Click +=new RoutedEventHandler(pauseButton_Clicked);
            buttonPanel.Children.Add(pauseButton);
            Button resumeButton = new Button();
            resumeButton.Content = "Resume";
            resumeButton.Click +=new RoutedEventHandler(resumeButton_Clicked);
            buttonPanel.Children.Add(resumeButton);
            Button skipToFillButton = new Button();
            skipToFillButton.Content = "Skip to Fill";
            skipToFillButton.Click +=new RoutedEventHandler(skipToFillButton_Clicked);
            buttonPanel.Children.Add(skipToFillButton);
            Button setSpeedRatioButton = new Button();
            setSpeedRatioButton.Content = "Triple Speed";
            setSpeedRatioButton.Click +=new RoutedEventHandler(setSpeedRatioButton_Clicked);
            buttonPanel.Children.Add(setSpeedRatioButton);
            Button stopButton = new Button();
            stopButton.Content = "Stop";
            stopButton.Click +=new RoutedEventHandler(stopButton_Clicked);
            buttonPanel.Children.Add(stopButton);
            Button removeButton = new Button();
            removeButton.Content = "Remove";
            removeButton.Click +=new RoutedEventHandler(removeButton_Clicked);
            buttonPanel.Children.Add(removeButton);            
            
            myStackPanel.Children.Add(buttonPanel);    
            
            // Create some controls to display the
            // storyboard's current time and the
            // current width of the rectangle.
            StackPanel seekPanel = new StackPanel();
            seekPanel.Margin = new Thickness(10);
            StackPanel aPanel = new StackPanel();
            Label aLabel = new Label();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel.Content = "Current Time: ";
            aPanel.Children.Add(aLabel);
            currentTimeIndicator = new TextBlock();
            aPanel.Children.Add(currentTimeIndicator);
            seekPanel.Children.Add(aPanel);
            
            aPanel = new StackPanel();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel = new Label();
            aLabel.Content = "Rectangle Width: ";
            aPanel.Children.Add(aLabel);
            rectangleWidthIndicator = new TextBlock();
            rectangleWidthIndicator.Text = myRectangle.Width.ToString(); 
            aPanel.Children.Add(rectangleWidthIndicator);
            seekPanel.Children.Add(aPanel);

            // Create some controls to enable the
            // user to specify a seek position.
            
            aPanel = new StackPanel();
            aPanel.Orientation = Orientation.Horizontal;
            aLabel = new Label();
            aLabel.Content = "Seek Offset: " ;
            aPanel.Children.Add(aLabel);
            seekDestination = new TextBox();
            seekDestination.Text = "0";
            aPanel.Children.Add(seekDestination);       
            seekPanel.Children.Add(aPanel);

            Button seekButton = new Button();
            seekButton.Content = "Seek";
            seekButton.Click += new RoutedEventHandler(seekButton_Clicked);
            seekPanel.Children.Add(seekButton);
            Button seekAlignedToLastTickButton = new Button();
            seekAlignedToLastTickButton.Content = "Seek Aligned to Last Tick";
            seekAlignedToLastTickButton.Click += new RoutedEventHandler(seekAlignedToLastTickButton_Clicked);
            seekPanel.Children.Add(seekAlignedToLastTickButton);           
            
            myStackPanel.Children.Add(seekPanel);
            
            this.Content = myStackPanel;   
            
            myStoryboard.CurrentTimeInvalidated += new EventHandler(myStoryboard_CurrentTimeInvalidated);
        }
        
        // Begins the storyboard.
        private void beginButton_Clicked(object sender, RoutedEventArgs args)
        {
            // Specifying "true" as the second Begin parameter
            // makes this storyboard controllable.
            myStoryboard.Begin(this, true);          
        }
        
        // Pauses the storyboard.
        private void pauseButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Pause(this);          
        }
        
        // Resumes the storyboard.
        private void resumeButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Resume(this);          
        }     
        
        // Advances the storyboard to its fill period.
        private void skipToFillButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.SkipToFill(this);          
        } 
        
        // Updates the storyboard's speed.
        private void setSpeedRatioButton_Clicked(object sender, RoutedEventArgs args)
        {
            // Makes the storyboard progress three times as fast as normal.
            myStoryboard.SetSpeedRatio(this, 3);          
        }           
        
        // Stops the storyboard.
        private void stopButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Stop(this);          
        }         
        
        // Removes the storyboard.
        private void removeButton_Clicked(object sender, RoutedEventArgs args)
        {
             myStoryboard.Remove(this);          
        }        
        
        private void seekButton_Clicked(object sender, RoutedEventArgs args)
        {
            try {
            
                // The rectangle width will probably not be at its new
                // value when this call is made, because the storyboard's
                // clock probably hasn't ticked yet.
                TimeSpan seekTime = TimeSpan.Parse(seekDestination.Text);
                myStoryboard.Seek(this, seekTime, TimeSeekOrigin.BeginTime);
                rectangleWidthIndicator.Text = myRectangle.Width.ToString();
            }catch(FormatException ex)
            {
                MessageBox.Show("Invalid TimeSpan value.");
                seekDestination.Focus();
            }
        }
        
        private void seekAlignedToLastTickButton_Clicked(object sender, RoutedEventArgs args)
        {

            try {
            
                // The rectangle width will be at its new
                // value when this call is made, because SeekAlignedToLastTick 
                // operation immediately updates timeline and animation
                // values.        
                TimeSpan seekTime = TimeSpan.Parse(seekDestination.Text);
                myStoryboard.SeekAlignedToLastTick(this, seekTime, TimeSeekOrigin.BeginTime);
                rectangleWidthIndicator.Text = myRectangle.Width.ToString();
            }catch(FormatException ex)
            {
                MessageBox.Show("Invalid TimeSpan value.");
                seekDestination.Focus();
            }    
        }
        
        private void myStoryboard_CurrentTimeInvalidated(object sender, EventArgs e)
        {
        
            currentTimeIndicator.Text = myStoryboard.GetCurrentTime(this).ToString();
        }
    }
}
'
'    This example shows how to seek a storyboard.
'
'


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



Namespace Microsoft.Samples.Animation.AnimatingWithStoryboards
    Partial Public Class SeekExample
        Inherits Page

        Private myStoryboard As Storyboard
        Private currentTimeIndicator As TextBlock
        Private seekDestination As TextBox
        Private rectangleWidthIndicator As TextBlock
        Private myRectangle As Rectangle

        Public Sub New()

            ' Create a name scope for the page.
            NameScope.SetNameScope(Me, New NameScope())

            Me.WindowTitle = "Controlling a Storyboard"
            Me.Background = Brushes.White

            Dim myStackPanel As New StackPanel()
            myStackPanel.Margin = New Thickness(20)

            ' Create a rectangle.
            myRectangle = New Rectangle()
            With myRectangle
                .Width = 100
                .Height = 20
                .Margin = New Thickness(12, 0, 0, 5)
                .Fill = New SolidColorBrush(Color.FromArgb(170, 51, 51, 255))
                .HorizontalAlignment = HorizontalAlignment.Left
            End With
            myStackPanel.Children.Add(myRectangle)

            ' Assign the rectangle a name by 
            ' registering it with the page, so that
            ' it can be targeted by storyboard
            ' animations.
            Me.RegisterName("myRectangle", myRectangle)

            '
            ' Create an animation and a storyboard to animate the
            ' rectangle.
            '
            Dim myDoubleAnimation As New DoubleAnimation(100, 500, New Duration(TimeSpan.FromSeconds(60)))
            Storyboard.SetTargetName(myDoubleAnimation, "myRectangle")
            Storyboard.SetTargetProperty(myDoubleAnimation, New PropertyPath(Rectangle.WidthProperty))
            myStoryboard = New Storyboard()
            myStoryboard.Children.Add(myDoubleAnimation)

            '
            ' Create some buttons to control the storyboard
            ' and a panel to contain them.
            '
            Dim buttonPanel As New StackPanel()
            buttonPanel.Orientation = Orientation.Horizontal
            Dim beginButton As New Button()
            beginButton.Content = "Begin"
            AddHandler beginButton.Click, AddressOf beginButton_Clicked
            buttonPanel.Children.Add(beginButton)
            Dim pauseButton As New Button()
            pauseButton.Content = "Pause"
            AddHandler pauseButton.Click, AddressOf pauseButton_Clicked
            buttonPanel.Children.Add(pauseButton)
            Dim resumeButton As New Button()
            resumeButton.Content = "Resume"
            AddHandler resumeButton.Click, AddressOf resumeButton_Clicked
            buttonPanel.Children.Add(resumeButton)
            Dim skipToFillButton As New Button()
            skipToFillButton.Content = "Skip to Fill"
            AddHandler skipToFillButton.Click, AddressOf skipToFillButton_Clicked
            buttonPanel.Children.Add(skipToFillButton)
            Dim setSpeedRatioButton As New Button()
            setSpeedRatioButton.Content = "Triple Speed"
            AddHandler setSpeedRatioButton.Click, AddressOf setSpeedRatioButton_Clicked
            buttonPanel.Children.Add(setSpeedRatioButton)
            Dim stopButton As New Button()
            stopButton.Content = "Stop"
            AddHandler stopButton.Click, AddressOf stopButton_Clicked
            buttonPanel.Children.Add(stopButton)
            Dim removeButton As New Button()
            removeButton.Content = "Remove"
            AddHandler removeButton.Click, AddressOf removeButton_Clicked
            buttonPanel.Children.Add(removeButton)

            myStackPanel.Children.Add(buttonPanel)

            ' Create some controls to display the
            ' storyboard's current time and the
            ' current width of the rectangle.
            Dim seekPanel As New StackPanel()
            seekPanel.Margin = New Thickness(10)
            Dim aPanel As New StackPanel()
            Dim aLabel As New Label()
            aPanel.Orientation = Orientation.Horizontal
            aLabel.Content = "Current Time: "
            aPanel.Children.Add(aLabel)
            currentTimeIndicator = New TextBlock()
            aPanel.Children.Add(currentTimeIndicator)
            seekPanel.Children.Add(aPanel)

            aPanel = New StackPanel()
            aPanel.Orientation = Orientation.Horizontal
            aLabel = New Label()
            aLabel.Content = "Rectangle Width: "
            aPanel.Children.Add(aLabel)
            rectangleWidthIndicator = New TextBlock()
            rectangleWidthIndicator.Text = myRectangle.Width.ToString()
            aPanel.Children.Add(rectangleWidthIndicator)
            seekPanel.Children.Add(aPanel)


            ' Create some controls to enable the
            ' user to specify a seek position.

            aPanel = New StackPanel()
            aPanel.Orientation = Orientation.Horizontal
            aLabel = New Label()
            aLabel.Content = "Seek Offset: "
            aPanel.Children.Add(aLabel)
            seekDestination = New TextBox()
            seekDestination.Text = "0"
            aPanel.Children.Add(seekDestination)
            seekPanel.Children.Add(aPanel)


            Dim seekButton As New Button()
            seekButton.Content = "Seek"
            AddHandler seekButton.Click, AddressOf seekButton_Clicked
            seekPanel.Children.Add(seekButton)
            Dim seekAlignedToLastTickButton As New Button()
            seekAlignedToLastTickButton.Content = "Seek Aligned to Last Tick"
            AddHandler seekAlignedToLastTickButton.Click, AddressOf seekAlignedToLastTickButton_Clicked
            seekPanel.Children.Add(seekAlignedToLastTickButton)

            myStackPanel.Children.Add(seekPanel)

            Me.Content = myStackPanel

            AddHandler myStoryboard.CurrentTimeInvalidated, AddressOf myStoryboard_CurrentTimeInvalidated
        End Sub

        ' Begins the storyboard.
        Private Sub beginButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
            ' Specifying "true" as the second Begin parameter
            ' makes this storyboard controllable.
            myStoryboard.Begin(Me, True)

        End Sub

        ' Pauses the storyboard.
        Private Sub pauseButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Pause(Me)

        End Sub

        ' Resumes the storyboard.
        Private Sub resumeButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Resume(Me)

        End Sub

        ' Advances the storyboard to its fill period.
        Private Sub skipToFillButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.SkipToFill(Me)

        End Sub

        ' Updates the storyboard's speed.
        Private Sub setSpeedRatioButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
            ' Makes the storyboard progress three times as fast as normal.
            myStoryboard.SetSpeedRatio(Me, 3)

        End Sub

        ' Stops the storyboard.
        Private Sub stopButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Stop(Me)

        End Sub

        ' Removes the storyboard.
        Private Sub removeButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
             myStoryboard.Remove(Me)

        End Sub

        Private Sub seekButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)
            Try

                ' The rectangle width will probably not be at its new
                ' value when this call is made, because the storyboard's
                ' clock probably hasn't ticked yet.
                Dim seekTime As TimeSpan = TimeSpan.Parse(seekDestination.Text)
                myStoryboard.Seek(Me, seekTime, TimeSeekOrigin.BeginTime)
                rectangleWidthIndicator.Text = myRectangle.Width.ToString()

            Catch ex As FormatException
                MessageBox.Show("Invalid TimeSpan value.")
                seekDestination.Focus()
            End Try
        End Sub

        Private Sub seekAlignedToLastTickButton_Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)

            Try

                ' The rectangle width will be at its new
                ' value when this call is made, because SeekAlignedToLastTick 
                ' operation immediately updates timeline and animation
                ' values.        
                Dim seekTime As TimeSpan = TimeSpan.Parse(seekDestination.Text)
                myStoryboard.SeekAlignedToLastTick(Me, seekTime, TimeSeekOrigin.BeginTime)
                rectangleWidthIndicator.Text = myRectangle.Width.ToString()

            Catch ex As FormatException
                MessageBox.Show("Invalid TimeSpan value.")
                seekDestination.Focus()
            End Try
        End Sub

        Private Sub myStoryboard_CurrentTimeInvalidated(ByVal sender As Object, ByVal e As EventArgs)

            currentTimeIndicator.Text = myStoryboard.GetCurrentTime(Me).ToString()

        End Sub



    End Class
End Namespace

Remarques

SeekAlignedToLastTick aligne l’heure recherchée du Storyboard avec le dernier graduation d’horloge. Les valeurs sont immédiatement mises à jour pour refléter les modifications dues à SeekAlignedToLastTick, même si l’écran ne reflète pas ces modifications tant que l’écran n’est pas mis à jour.

Notez que les opérations de recherche ne prennent pas en compte les paramètres du storyboard ou SlipBehavior du SpeedRatio storyboard. Le storyboard est traité comme s’il avait une SpeedRatio valeur de 1 et aucune SlipBehavior.

Cette méthode remplace l’horloge du CurrentState storyboard par

Active.

La recherche d’un storyboard déclenche les CurrentGlobalSpeedInvalidated événements et CurrentStateInvalidated .

Pour contrôler ce storyboard de manière interactive, vous devez utiliser le même containingObject paramètre lors de l’appel des méthodes interactives que vous avez utilisées pour commencer le storyboard. Un storyboard contrôlable peut suspendre, reprendre, rechercher, arrêter et être supprimé. Pour rendre un storyboard contrôlable dans le code, vous devez utiliser la surcharge appropriée de la méthode du Begin storyboard et spécifier true pour la rendre contrôlable. Pour obtenir un exemple, consultez Guide pratique pour contrôler un storyboard après son démarrage.

S’applique à

SeekAlignedToLastTick(TimeSpan)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

public:
 void SeekAlignedToLastTick(TimeSpan offset);
public void SeekAlignedToLastTick (TimeSpan offset);
member this.SeekAlignedToLastTick : TimeSpan -> unit
Public Sub SeekAlignedToLastTick (offset As TimeSpan)

Paramètres

offset
TimeSpan

Valeur négative ou positive qui décrit la durée nécessaire pour que la chronologie avance ou recule.

Remarques

SeekAlignedToLastTick aligne l’heure recherchée du Storyboard avec le dernier graduation d’horloge. Les valeurs sont immédiatement mises à jour pour refléter les modifications dues à SeekAlignedToLastTick, même si l’écran ne reflète pas ces modifications tant que l’écran n’est pas mis à jour.

Notez que les opérations de recherche ne prennent pas en compte les paramètres du storyboard ou SlipBehavior du SpeedRatio storyboard. Le storyboard est traité comme s’il avait une SpeedRatio valeur de 1 et aucune SlipBehavior.

Pour rendre un storyboard contrôlable dans le code, vous devez utiliser la surcharge appropriée de la méthode du Begin storyboard et spécifier true pour la rendre contrôlable. Pour obtenir un exemple, consultez Guide pratique pour contrôler un storyboard après son démarrage.

S’applique à

SeekAlignedToLastTick(TimeSpan, TimeSeekOrigin)

Recherche immédiatement Storyboard à une nouvelle position (de façon synchrone).

public:
 void SeekAlignedToLastTick(TimeSpan offset, System::Windows::Media::Animation::TimeSeekOrigin origin);
public void SeekAlignedToLastTick (TimeSpan offset, System.Windows.Media.Animation.TimeSeekOrigin origin);
member this.SeekAlignedToLastTick : TimeSpan * System.Windows.Media.Animation.TimeSeekOrigin -> unit
Public Sub SeekAlignedToLastTick (offset As TimeSpan, origin As TimeSeekOrigin)

Paramètres

offset
TimeSpan

Valeur positive ou négative qui décrit la valeur du déplacement de la chronologie vers l’avant ou vers l’arrière par rapport à l’origin spécifiée.

origin
TimeSeekOrigin

Position à partir de laquelle offset est appliqué.

Remarques

SeekAlignedToLastTick aligne l’heure recherchée du Storyboard avec le dernier graduation d’horloge. Les valeurs sont immédiatement mises à jour pour refléter les modifications dues à SeekAlignedToLastTick, même si l’écran ne reflète pas ces modifications tant que l’écran n’est pas mis à jour.

Notez que les opérations de recherche ne prennent pas en compte les paramètres du storyboard ou SlipBehavior du SpeedRatio storyboard. Le storyboard est traité comme s’il avait une SpeedRatio valeur de 1 et aucune SlipBehavior.

Pour rendre un storyboard contrôlable dans le code, vous devez utiliser la surcharge appropriée de la méthode du Begin storyboard et spécifier true pour la rendre contrôlable. Pour obtenir un exemple, consultez Guide pratique pour contrôler un storyboard après son démarrage.

S’applique à