Timeline.DesiredFrameRate Propriété attachée

Définition

Obtient ou définit la fréquence d'images souhaitée pour cette chronologie et ses chronologies enfants.

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

Exemples

L’exemple suivant utilise la propriété DesiredFrameRate pour limiter plusieurs animations à 10 images par seconde.

<!-- 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>

Remarques

Utilisez cette propriété pour définir une fréquence d’images spécifique à laquelle les animations doivent s’exécuter.  Il s’agit d’une recommandation uniquement et n’est pas une valeur garantie. Cette propriété a deux utilisations principales :

  • Limitation de la quantité de ressources de traitement pour les animations de type arrière-plan à déplacement lent qui ne nécessitent pas un degré élevé de fidélité. Pour ce faire, définissez une petite valeur de fréquence d’images sur la chronologie.

  • Réduction de l’impact visuel de la déchirure sur les animations horizontales rapides. Pour ce faire, vous pouvez définir une valeur de fréquence d’images élevée sur la chronologie.

Cette propriété ne peut être définie que sur une chronologie racine.

S’applique à

Voir aussi