อ่านในภาษาอังกฤษ แก้ไข

แชร์ผ่าน


Storyboard.SetSpeedRatio Method

Definition

Sets the interactive speed ratio for the Clock that was created for this Storyboard.

Overloads

SetSpeedRatio(Double)

Sets the interactive speed ratio for the Clock that was created for this Storyboard.

SetSpeedRatio(FrameworkContentElement, Double)

Sets the interactive speed ratio of the Clock that was created for this Storyboard.

SetSpeedRatio(FrameworkElement, Double)

Sets the interactive speed ratio of the Clock that was created for this Storyboard.

SetSpeedRatio(Double)

Sets the interactive speed ratio for the Clock that was created for this Storyboard.

C#
public void SetSpeedRatio(double speedRatio);

Parameters

speedRatio
Double

A finite value greater than zero that is the new interactive speed ratio of the storyboard. This value is multiplied against the storyboard's SpeedRatio value to determine the storyboard's effective speed. This value does not overwrite the storyboard's SpeedRatio property. For example, calling this method and specifying an interactive speed ratio of 3 on a storyboard with a SpeedRatio of 0.5 gives the storyboard an effective speed of 1.5.

Remarks

A controllable storyboard can pause, resume, seek, stop, and be removed. To make a storyboard controllable in code, you must use the appropriate overload of the storyboard's Begin method and specify true to make it controllable. For an example, see How to: Control a Storyboard After It Starts.

Applies to

.NET Framework 4.8.1 และรุ่นอื่นๆ
ผลิตภัณฑ์ เวอร์ชัน
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

SetSpeedRatio(FrameworkContentElement, Double)

Sets the interactive speed ratio of the Clock that was created for this Storyboard.

C#
public void SetSpeedRatio(System.Windows.FrameworkContentElement containingObject, double speedRatio);

Parameters

containingObject
FrameworkContentElement

The object specified when the Begin(FrameworkContentElement, Boolean) method was called. This object contains the Clock objects that were created for this storyboard and its children.

speedRatio
Double

A finite value greater than zero that is the new interactive speed ratio of the storyboard. This value is multiplied against the storyboard's SpeedRatio value to determine the storyboard's effective speed. This value does not overwrite the storyboard's SpeedRatio property. For example, calling this method and specifying an interactive speed ratio of 3 on a storyboard with a SpeedRatio of 0.5 gives the storyboard an effective speed of 1.5.

Examples

The following example uses a controllable storyboard to animate a TextEffect. The TextEffect is contained within a FrameworkContentElement's name scope.

C#
/*
    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 class FrameworkContentElementControlStoryboardExample : FlowDocument
    {
    
        private Storyboard myStoryboard;
        
        public FrameworkContentElementControlStoryboardExample()
        {
        
            // Create a name scope for the document.
            NameScope.SetNameScope(this, new NameScope());        
            this.Background = Brushes.White;
            
            // Create a run of text.
            Run theText = new Run( 
                "Lorem ipsum dolor sit amet, consectetuer adipiscing elit." + 
                "Ut non lacus. Nullam a ligula id leo adipiscing ornare." +
                " Duis mattis. ");   
                
            // Create a TextEffect
            TextEffect animatedSpecialEffect = new TextEffect();
            animatedSpecialEffect.Foreground = Brushes.OrangeRed;
            animatedSpecialEffect.PositionStart = 0;
            animatedSpecialEffect.PositionCount = 0;
            
            // Assign the TextEffect a name by 
            // registering it with the page, so that
            // it can be targeted by storyboard
            // animations            
            this.RegisterName("animatedSpecialEffect", animatedSpecialEffect);  
            
            // Apply the text effect to the run.
            theText.TextEffects = new TextEffectCollection();
            theText.TextEffects.Add(animatedSpecialEffect);
            
            // Create a paragraph to contain the run.
            Paragraph animatedParagraph = new Paragraph(theText);
            animatedParagraph.Background = Brushes.LightGray;
            animatedParagraph.Padding = new Thickness(20);
   
            this.Blocks.Add(animatedParagraph);            
            BlockUIContainer controlsContainer = new BlockUIContainer();                
            
            //
            // Create an animation and a storyboard to animate the
            // text effect.
            //
            Int32Animation countAnimation = 
                new Int32Animation(0, 127, TimeSpan.FromSeconds(10)); 
            Storyboard.SetTargetName(countAnimation, "animatedSpecialEffect");
            Storyboard.SetTargetProperty(countAnimation, 
                new PropertyPath(TextEffect.PositionCountProperty));
            myStoryboard = new Storyboard();
            myStoryboard.Children.Add(countAnimation);
            
            //
            // Create some buttons to control the storyboard
            // and a panel to contain them.
            //
            StackPanel buttonPanel = new StackPanel();
            buttonPanel.Orientation = Orientation.Vertical;
            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); 
   
            controlsContainer.Child = buttonPanel; 
            this.Blocks.Add(controlsContainer);
        }
        
        // 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);          
        }           
    }
}

Remarks

To interactively control this storyboard, you must use the same containingObject parameter when calling the interactive methods that you used to begin the storyboard. A controllable storyboard can pause, resume, seek, stop, and be removed. To make a storyboard controllable in code, you must use the appropriate overload of the storyboard's Begin method and specify true to make it controllable. For an example, see How to: Control a Storyboard After It Starts.

Calling this method triggers the CurrentGlobalSpeedInvalidated event.

Applies to

.NET Framework 4.8.1 และรุ่นอื่นๆ
ผลิตภัณฑ์ เวอร์ชัน
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

SetSpeedRatio(FrameworkElement, Double)

Sets the interactive speed ratio of the Clock that was created for this Storyboard.

C#
public void SetSpeedRatio(System.Windows.FrameworkElement containingObject, double speedRatio);

Parameters

containingObject
FrameworkElement

The object specified when the Begin(FrameworkElement, Boolean) method was called. This object contains the Clock objects that were created for this storyboard and its children.

speedRatio
Double

A finite value greater than zero that is the new interactive speed ratio of the storyboard. This value is multiplied against the storyboard's SpeedRatio value to determine the storyboard's effective speed. This value does not overwrite the storyboard's SpeedRatio property. For example, calling this method and specifying an interactive speed ratio of 3 on a storyboard with a SpeedRatio of 0.5 gives the storyboard an effective speed of 1.5.

Remarks

To interactively control this storyboard, you must use the same containingObject parameter when calling the interactive methods that you used to begin the storyboard. A controllable storyboard can pause, resume, seek, stop, and be removed. To make a storyboard controllable in code, you must use the appropriate overload of the storyboard's Begin method and specify true to make it controllable. For an example, see How to: Control a Storyboard After It Starts.

Calling this method triggers the CurrentGlobalSpeedInvalidated event.

Applies to

.NET Framework 4.8.1 และรุ่นอื่นๆ
ผลิตภัณฑ์ เวอร์ชัน
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10