Timeline.DesiredFrameRate Proprietà associata

Definizione

Ottiene o imposta la frequenza di aggiornamento desiderata per questa sequenza temporale e le sequenze temporali figlio.

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

Esempio

Nell'esempio seguente viene utilizzata la proprietà DesiredFrameRate per limitare diverse animazioni a 10 fotogrammi al secondo.

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

Commenti

Utilizzare questa proprietà per definire una frequenza di fotogrammi specifica in corrispondenza della quale devono essere eseguite le animazioni.  Si tratta solo di una linea guida e non è un valore garantito. Questa proprietà ha due usi primari:

  • Limitare la quantità di risorse di elaborazione per animazioni con tipi di sfondo lente e in movimento che non richiedono un elevato grado di fedeltà. A tale scopo, è possibile impostare un valore di frequenza dei fotogrammi ridotto sulla sequenza temporale.

  • Riduzione dell'impatto visivo della disinstallazione sulle animazioni orizzontali in spostamento rapido. A tale scopo, è possibile impostare un valore elevato di frequenza dei fotogrammi nella sequenza temporale.

Questa proprietà può essere impostata solo su una sequenza temporale radice.

Si applica a

Vedi anche