# Storyboard.SetSpeedRatio Method

## Definition

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

 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.

``````public:
void SetSpeedRatio(double speedRatio);``````
``public void SetSpeedRatio (double speedRatio);``
``member this.SetSpeedRatio : double -> unit``
``Public Sub SetSpeedRatio (speedRatio As Double)``

#### 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.

## SetSpeedRatio(FrameworkContentElement, Double)

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

``````public:
void SetSpeedRatio(System::Windows::FrameworkContentElement ^ containingObject, double speedRatio);``````
``public void SetSpeedRatio (System.Windows.FrameworkContentElement containingObject, double speedRatio);``
``member this.SetSpeedRatio : System.Windows.FrameworkContentElement * double -> unit``
``Public Sub SetSpeedRatio (containingObject As FrameworkContentElement, speedRatio As Double)``

#### 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.

``````/*
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();

// Create a paragraph to contain the run.
Paragraph animatedParagraph = new Paragraph(theText);
animatedParagraph.Background = Brushes.LightGray;

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();

//
// 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);
Button pauseButton = new Button();
pauseButton.Content = "Pause";
pauseButton.Click +=new RoutedEventHandler(pauseButton_Clicked);
Button resumeButton = new Button();
resumeButton.Content = "Resume";
resumeButton.Click +=new RoutedEventHandler(resumeButton_Clicked);
Button skipToFillButton = new Button();
skipToFillButton.Click +=new RoutedEventHandler(skipToFillButton_Clicked);
Button setSpeedRatioButton = new Button();
setSpeedRatioButton.Content = "Triple Speed";
setSpeedRatioButton.Click +=new RoutedEventHandler(setSpeedRatioButton_Clicked);
Button stopButton = new Button();
stopButton.Content = "Stop";
stopButton.Click +=new RoutedEventHandler(stopButton_Clicked);
Button removeButton = new Button();
removeButton.Content = "Remove";
removeButton.Click +=new RoutedEventHandler(removeButton_Clicked);

controlsContainer.Child = buttonPanel;
}

// 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);
}

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);
}
}
}
``````
``````'
'    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
Public Class FrameworkContentElementControlStoryboardExample
Inherits FlowDocument

Private myStoryboard As Storyboard

Public Sub New()

' Create a name scope for the document.
NameScope.SetNameScope(Me, New NameScope())
Me.Background = Brushes.White

' Create a run of text.
Dim theText As 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
Dim animatedSpecialEffect As 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
Me.RegisterName("animatedSpecialEffect", animatedSpecialEffect)

' Apply the text effect to the run.
theText.TextEffects = New TextEffectCollection()

' Create a paragraph to contain the run.
Dim animatedParagraph As New Paragraph(theText)
animatedParagraph.Background = Brushes.LightGray

Dim controlsContainer As New BlockUIContainer()

'
' Create an animation and a storyboard to animate the
' text effect.
'
Dim countAnimation As New Int32Animation(0, 127, TimeSpan.FromSeconds(10))
Storyboard.SetTargetName(countAnimation, "animatedSpecialEffect")
Storyboard.SetTargetProperty(countAnimation, New PropertyPath(TextEffect.PositionCountProperty))
myStoryboard = New Storyboard()

'
' Create some buttons to control the storyboard
' and a panel to contain them.
'
Dim buttonPanel As New StackPanel()
buttonPanel.Orientation = Orientation.Vertical
Dim beginButton As New Button()
beginButton.Content = "Begin"
Dim pauseButton As New Button()
pauseButton.Content = "Pause"
Dim resumeButton As New Button()
resumeButton.Content = "Resume"
Dim skipToFillButton As New Button()
Dim setSpeedRatioButton As New Button()
setSpeedRatioButton.Content = "Triple Speed"
Dim stopButton As New Button()
stopButton.Content = "Stop"
Dim removeButton As New Button()
removeButton.Content = "Remove"

controlsContainer.Child = buttonPanel

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

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

End Class
End Namespace
``````

### 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.

## SetSpeedRatio(FrameworkElement, Double)

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

``````public:
void SetSpeedRatio(System::Windows::FrameworkElement ^ containingObject, double speedRatio);``````
``public void SetSpeedRatio (System.Windows.FrameworkElement containingObject, double speedRatio);``
``member this.SetSpeedRatio : System.Windows.FrameworkElement * double -> unit``
``Public Sub SetSpeedRatio (containingObject As FrameworkElement, speedRatio As Double)``

#### 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.