Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du använder kod för att styra en Storyboard när den har startats. Om du vill styra en storyboard i XAML använder du Trigger och TriggerAction objekt. Ett exempel finns i Använda händelseutlösare för att styra en storyboard när den startar.
Om du vill starta ett storyboard använder du dess Begin-metod, som distribuerar storyboardets animeringar till de egenskaper de animerar och startar storyboardet.
Om du vill göra en storyboard kontrollbar använder du metoden Begin och anger sant som den andra parametern. Du kan sedan använda storyboardens interaktiva metoder för att pausa, återuppta, söka, stoppa, påskynda eller sakta ned storyboarden eller föra den till dess fyllningsperiod. Följande är en lista över storyboardens interaktiva metoder:
Pause: Paus av storyboarden.
Resume: Återupptar en pausad bildberättelse.
SetSpeedRatio: Ställer in storyboardens interaktiva hastighet.
Seek: Söker efter storyboarden på den angivna platsen.
SeekAlignedToLastTick: Söker storyboarden till den angivna platsen. Till skillnad från metoden Seek bearbetas den här åtgärden före nästa tick.
SkipToFill: Flyttar fram storyboarden till dess fyllningsperiod, om den har en.
Stop: Stoppar storyboarden.
I följande exempel används flera storyboard-metoder för att interaktivt styra en storyboard.
Anmärkning
Ett exempel på hur du styr en storyboard med utlösare med XAML finns i Använda händelseutlösare för att styra en storyboard när den startar.
Exempel
/*
    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;
namespace Microsoft.Samples.Animation.TimingBehaviors
{
    public partial class ControlStoryboardExample : Page
    {
        private Storyboard myStoryboard;
        public ControlStoryboardExample()
        {
            // 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.
            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(5)));
            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);
            myStackPanel.Children.Add(buttonPanel);
            this.Content = myStackPanel;
        }
        // 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);
        }
    }
}
'
'    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
Namespace Microsoft.Samples.Animation.TimingBehaviors
    Partial Public Class ControlStoryboardExample
        Inherits Page
        Private ReadOnly myStoryboard As Storyboard
        Public Sub New()
            ' Create a name scope for the page.
            NameScope.SetNameScope(Me, New NameScope())
            WindowTitle = "Controlling a Storyboard"
            Background = Brushes.White
            Dim myStackPanel As New StackPanel With {
                .Margin = New Thickness(20)
            }
                ' Create a rectangle.
            Dim myRectangle As New Rectangle With {
                .Width = 100,
                .Height = 20,
                .Margin = New Thickness(12, 0, 0, 5),
                .Fill = New SolidColorBrush(Color.FromArgb(170, 51, 51, 255)),
                .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.
            RegisterName("myRectangle", myRectangle)
            '
            ' Create an animation and a storyboard to animate the
            ' rectangle.
            '
            Dim myDoubleAnimation As New DoubleAnimation(100, 500, New Duration(TimeSpan.FromSeconds(5)))
            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 With {
                .Orientation = Orientation.Horizontal
            }
            Dim beginButton As New Button With {
                .Content = "Begin"
            }
            AddHandler beginButton.Click, AddressOf beginButton_Clicked
            buttonPanel.Children.Add(beginButton)
            Dim pauseButton As New Button With {
                .Content = "Pause"
            }
            AddHandler pauseButton.Click, AddressOf pauseButton_Clicked
            buttonPanel.Children.Add(pauseButton)
            Dim resumeButton As New Button With {
                .Content = "Resume"
            }
            AddHandler resumeButton.Click, AddressOf resumeButton_Clicked
            buttonPanel.Children.Add(resumeButton)
            Dim skipToFillButton As New Button With {
                .Content = "Skip to Fill"
            }
            AddHandler skipToFillButton.Click, AddressOf skipToFillButton_Clicked
            buttonPanel.Children.Add(skipToFillButton)
            Dim setSpeedRatioButton As New Button With {
                .Content = "Triple Speed"
            }
            AddHandler setSpeedRatioButton.Click, AddressOf setSpeedRatioButton_Clicked
            buttonPanel.Children.Add(setSpeedRatioButton)
            Dim stopButton As New Button With {
                .Content = "Stop"
            }
            AddHandler stopButton.Click, AddressOf stopButton_Clicked
            buttonPanel.Children.Add(stopButton)
            myStackPanel.Children.Add(buttonPanel)
            Content = myStackPanel
        End Sub
        ' Begins the storyboard.
        Private Sub beginButton_Clicked(sender As Object, 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(sender As Object, args As RoutedEventArgs)
            myStoryboard.Pause(Me)
        End Sub
        ' Resumes the storyboard.
        Private Sub resumeButton_Clicked(sender As Object, args As RoutedEventArgs)
            myStoryboard.Resume(Me)
        End Sub
        ' Advances the storyboard to its fill period.
        Private Sub skipToFillButton_Clicked(sender As Object, args As RoutedEventArgs)
            myStoryboard.SkipToFill(Me)
        End Sub
        ' Updates the storyboard's speed.
        Private Sub setSpeedRatioButton_Clicked(sender As Object, 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(sender As Object, args As RoutedEventArgs)
            myStoryboard.Stop(Me)
        End Sub
    End Class
End Namespace
Se även
.NET Desktop feedback