Condividi tramite


MatrixAnimationUsingPath.IsAngleCumulative Proprietà

Definizione

Ottiene o imposta un valore che specifica se l'angolo di rotazione della matrice animata deve accumulare i valori di ripetizione.

public:
 property bool IsAngleCumulative { bool get(); void set(bool value); };
public bool IsAngleCumulative { get; set; }
member this.IsAngleCumulative : bool with get, set
Public Property IsAngleCumulative As Boolean

Valore della proprietà

true se l'angolo di rotazione dell'animazione deve accumulare i valori di ripetizione; in caso contrario, false. Il valore predefinito è false.

Esempio

Nell'esempio seguente vengono usate due animazioni simili MatrixAnimationUsingPath per animare lo stesso rettangolo. Entrambe le animazioni hanno la stessa PathGeometry impostazione, che causa la rotazione del rettangolo mentre si sposta lungo lo schermo a destra e entrambe le animazioni sono impostate per ripetere quattro volte. La prima proprietà dell'animazione IsAngleCumulative è impostata su false, quindi il rettangolo torna all'angolo originale quando l'animazione si ripete. La proprietà della seconda animazione è impostata su true. Di conseguenza, l'angolo del IsAngleCumulative rettangolo sembra aumentare quando l'animazione si ripete, anziché tornare al valore originale.

<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
  <StackPanel Margin="50">
      
    <!-- The Rectangle that is animated across the screen by animating
         the MatrixTransform applied to the button. -->
    <Rectangle 
      Width="75" Height="25"
      HorizontalAlignment="Left"
      VerticalAlignment="Top"
      Stroke="Black" StrokeThickness="1">
      <Rectangle.RenderTransform>
        <MatrixTransform x:Name="myMatrixTransform">
          <MatrixTransform.Matrix >
            <Matrix OffsetX="10" OffsetY="100"/>
          </MatrixTransform.Matrix>
        </MatrixTransform>
      </Rectangle.RenderTransform>
      <Rectangle.Fill>
        <LinearGradientBrush>
          <GradientStop Color="Lime" Offset="0.0" />
          <GradientStop Color="Gray" Offset="1.0" />
        </LinearGradientBrush>
      </Rectangle.Fill>
    </Rectangle>

    <!-- Shows the animation path. -->
    <Path
      Stroke="Black" StrokeThickness="5"
      Data="M 0,0 A 50,50 0 1 0 100,0" />
    
    <StackPanel Margin="0,200,0,0" Orientation="Horizontal">
    <Button Content="Animate with IsAngleCumulative set to False"
      HorizontalAlignment="Left" Padding="5">
      <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
          <BeginStoryboard>
            <Storyboard>

              <!-- The angle generated by this animation does not
                   accumulate over repetitions. As a result, 
                   the rectangle appears to jump back to its 
                   starting angle when the animation repeats.  -->
              <MatrixAnimationUsingPath
                Storyboard.TargetName="myMatrixTransform"
                Storyboard.TargetProperty="Matrix"
                Duration="0:0:2" 
                RepeatBehavior="4x" 
                IsOffsetCumulative="True" 
                IsAngleCumulative="False"
                DoesRotateWithTangent="True">
                <MatrixAnimationUsingPath.PathGeometry>
                  <PathGeometry Figures="M 0,0 A 50,50 0 1 0 100,0" />
                </MatrixAnimationUsingPath.PathGeometry>
              </MatrixAnimationUsingPath>
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>   
    </Button>
    
     <Button Content="Animate with IsAngleCumulative set to True"
      HorizontalAlignment="Left" 
      Padding="5">
      <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
          <BeginStoryboard>
            <Storyboard>
            
              <!-- The angle generated by this animation accumulates
                   over repetitions. As a result, the rectangle's
                   rotation appears seamless.  -->
              <MatrixAnimationUsingPath
                Storyboard.TargetName="myMatrixTransform"
                Storyboard.TargetProperty="Matrix"
                Duration="0:0:2" 
                RepeatBehavior="4x" 
                IsOffsetCumulative="True" 
                IsAngleCumulative="True"
                DoesRotateWithTangent="True">
                <MatrixAnimationUsingPath.PathGeometry>
                  <PathGeometry Figures="M 0,0 A 50,50 0 1 0 100,0" />
                </MatrixAnimationUsingPath.PathGeometry>
              </MatrixAnimationUsingPath>
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>   
    </Button>   
    </StackPanel>
    
    
  </StackPanel>
</Page>

Commenti

Se questa proprietà è impostata su true, l'angolo di rotazione della matrice animata si accumula quando l'animazione si ripete. Se il percorso è un piccolo arco, un angolo cumulativo causerà la rotazione continua dell'oggetto con ogni ripetizione anziché riavviare la rotazione. Quando si combina con un IsOffsetCumulative oggetto true, l'oggetto potrebbe sembrare incappato mentre viene rimbalzato (a seconda del percorso specificato). Per ulteriori informazioni, vedere IsOffsetCumulative.

L'impostazione di questa proprietà non ha alcun effetto se DoesRotateWithTangent è false.

Questa proprietà determina se l'angolo della matrice di animazione si accumula quando l'animazione si ripete a causa della relativa RepeatBehavior impostazione; non causa l'accumulo dell'offset quando l'animazione viene riavviata. Per informazioni su come creare una compilazione di un'animazione dai valori di un'animazione precedente, vedere IsAdditive.

Informazioni proprietà di dipendenza

Campo Identificatore IsAngleCumulativeProperty
Proprietà dei metadati impostate su true Nessuno

Si applica a

Vedi anche