Compartilhar via


Timeline.DesiredFrameRate Propriedade anexada

Definição

Obtém ou define a taxa de quadros desejada para esta linha do tempo e suas linhas do tempo filhas.

see GetDesiredFrameRate, and SetDesiredFrameRate
see GetDesiredFrameRate, and SetDesiredFrameRate
see GetDesiredFrameRate, and SetDesiredFrameRate

Exemplos

O exemplo a seguir usa a propriedade DesiredFrameRate para limitar várias animações a 10 quadros 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>

Comentários

Use essa propriedade para definir uma taxa de quadros específica na qual as animações devem ser executadas.Essa é apenas uma diretriz e não é um valor garantido. Essa propriedade tem dois usos primários:

  • Limitando a quantidade de recursos de processamento para animações de tipo de plano de fundo de movimentação lenta que não exigem um alto grau de fidelidade. Isso pode ser obtido definindo um valor de taxa de quadro pequeno na linha do tempo.

  • Reduzindo o impacto visual do tearing em animações horizontais em movimento rápido. Isso pode ser obtido definindo um valor de taxa de quadros alto na linha do tempo.

Essa propriedade só pode ser definida em uma linha do tempo raiz.

Aplica-se a

Confira também