Timeline.DesiredFrameRate Propriedade Anexada
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou define a taxa de frames desejada para esta linha temporal e as suas linhas temporais filhas.
see GetDesiredFrameRate, and SetDesiredFrameRate
see GetDesiredFrameRate, and SetDesiredFrameRate
see GetDesiredFrameRate, and SetDesiredFrameRate
Exemplos
O exemplo seguinte utiliza a propriedade DesiredFrameRate para limitar várias animações a 10 fotogramas por segundo.
<!-- 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>
Observações
Use esta propriedade para definir uma taxa de fotogramas específica à qual as animações devem ser executadas. Isto é apenas uma diretriz e não é um valor garantido. Esta propriedade tem dois usos principais:
Limitar a quantidade de recursos de processamento para animações de fundo lentas que não exigem um elevado grau de fidelidade. Isto pode ser conseguido definindo um valor de taxa de fotogramas pequeno na linha temporal.
Reduzir o impacto visual do tearing em animações horizontais rápidas. Isto pode ser conseguido definindo um valor elevado de taxa de fotogramas na linha temporal.
Esta propriedade só pode ser definida numa linha temporal raiz.