Timeline.DesiredFrameRate Attached Property
Gets or sets the desired frame rate for this timeline and its child timelines.
Assembly: PresentationCore (in PresentationCore.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
<object DesiredFrameRate="RepeatBehavior"/>- or -<object Timeline.DesiredFrameRate="RepeatBehavior"/>
Property Value
Type: System.Nullable<Int32>A value greater than zero that is the desired frame rate for this timeline and its child timelines, or null if the system should automatically determine the frame rate. The default value is null.
Use this property to define a specific frame rate at which animations should run. This is a guideline only, and is not a guaranteed value. This property has two primary uses:
-
Limiting the amount of processing resources for slow-moving, background type animations that do not require a high degree of fidelity. This can be achieved by setting a small frame rate value on the timeline.
-
Reducing the visual impact of tearing on fast-moving horizontal animations. This can be achieved by setting a high frame rate value on the timeline.
This property may only be set on a root timeline.
The following example uses the DesiredFrameRate property to limit several animations to 10 frames per second.
<!-- DesiredFrameRateExample.xaml This example shows how to use the DesiredFrameRate property. Two DrawingBrushes are animated. The desired frame rate is set on one group of animations but not the other, for comparison. --> <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowTitle="DesiredFrameRate Example" Background="White"> <Page.Resources> <!-- The Drawing used by the animated DrawingBrush. --> <DrawingGroup x:Key="CheckerDrawing"> <GeometryDrawing Brush="White"> <GeometryDrawing.Geometry> <RectangleGeometry Rect="0,0,100,100" /> </GeometryDrawing.Geometry> </GeometryDrawing> <GeometryDrawing Brush="Gray"> <GeometryDrawing.Geometry> <RectangleGeometry Rect="0,0,50,50" /> </GeometryDrawing.Geometry> </GeometryDrawing> <GeometryDrawing Brush="Gray"> <GeometryDrawing.Geometry> <RectangleGeometry Rect="50,50,50,50" /> </GeometryDrawing.Geometry> </GeometryDrawing> </DrawingGroup> </Page.Resources> <StackPanel Margin="10"> <Rectangle Width="200" Height="200" Margin="10" Stroke="Black" StrokeThickness="1" > <Rectangle.Fill> <DrawingBrush Drawing="{StaticResource CheckerDrawing}" Viewport="0,0,50,50" ViewportUnits="Absolute" TileMode="Tile"> <DrawingBrush.RelativeTransform> <TransformGroup> <RotateTransform x:Name="AnimatedRotateTransform1" CenterX="0.5" CenterY="0.5" /> <ScaleTransform x:Name="AnimatedScaleTransform1" CenterX="0.5" CenterY="0.5" /> </TransformGroup> </DrawingBrush.RelativeTransform> </DrawingBrush> </Rectangle.Fill> <Rectangle.Triggers> <EventTrigger RoutedEvent="Rectangle.Loaded"> <BeginStoryboard> <!-- Set the desired framerate on the root timeline. The animations that belong to this storyboard will be limited to 10 frames per second. --> <Storyboard Timeline.DesiredFrameRate="10"> <DoubleAnimation Storyboard.TargetName="AnimatedRotateTransform1" Storyboard.TargetProperty="Angle" From="0" To="360" Duration="0:1:00" AutoReverse="True" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetName="AnimatedScaleTransform1" Storyboard.TargetProperty="ScaleX" From="1" To="5" Duration="0:0:30" AutoReverse="True" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetName="AnimatedScaleTransform1" Storyboard.TargetProperty="ScaleY" From="1" To="5" Duration="0:0:45" AutoReverse="True" RepeatBehavior="Forever" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Rectangle.Triggers> </Rectangle> <Rectangle Width="200" Height="200" Margin="10" Stroke="Black" StrokeThickness="1"> <Rectangle.Fill> <DrawingBrush Drawing="{StaticResource CheckerDrawing}" Viewport="0,0,50,50" ViewportUnits="Absolute" TileMode="Tile"> <DrawingBrush.RelativeTransform> <TransformGroup> <RotateTransform x:Name="AnimatedRotateTransform2" CenterX="0.5" CenterY="0.5" /> <ScaleTransform x:Name="AnimatedScaleTransform2" CenterX="0.5" CenterY="0.5" /> </TransformGroup> </DrawingBrush.RelativeTransform> </DrawingBrush> </Rectangle.Fill> <Rectangle.Triggers> <EventTrigger RoutedEvent="Rectangle.Loaded"> <BeginStoryboard> <!-- The animations that belong to this storyboard will run at full speed. --> <Storyboard> <DoubleAnimation Storyboard.TargetName="AnimatedRotateTransform2" Storyboard.TargetProperty="Angle" From="0" To="360" Duration="0:1:00" AutoReverse="True" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetName="AnimatedScaleTransform2" Storyboard.TargetProperty="ScaleX" From="1" To="5" Duration="0:0:30" AutoReverse="True" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetName="AnimatedScaleTransform2" Storyboard.TargetProperty="ScaleY" From="1" To="5" Duration="0:0:45" AutoReverse="True" RepeatBehavior="Forever" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Rectangle.Triggers> </Rectangle> </StackPanel> </Page>
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.