Condividi tramite


MatrixAnimationUsingPath.IsAngleCumulative Proprietà

Definizione

Ottiene o imposta un valore che specifica se l'angolo di rotazione della matrice animata deve accumularsi sulle ripetizioni.

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 accumularsi sulle ripetizioni; 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 determina la rotazione del rettangolo mentre si sposta lungo lo schermo a destra e entrambe le animazioni vengono impostate per ripetere quattro volte. La proprietà della IsAngleCumulative prima animazione è impostata su false, quindi il rettangolo torna all'angolo originale quando l'animazione si ripete. La proprietà della IsAngleCumulative seconda animazione è impostata su true. Di conseguenza, l'angolo del 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. Se combinato con un IsOffsetCumulative di true, l'oggetto potrebbe sembrare cadere mentre rimbalza (a seconda del percorso specificato). Per informazioni correlate, 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 dell'impostazione RepeatBehavior . L'offset non si accumula quando l'animazione viene riavviata. Per informazioni su come creare un'animazione in base ai valori di un'animazione precedente, vedere IsAdditive.

Informazioni sulle proprietà di dipendenza

Elemento Valore
Campo Identificatore IsAngleCumulativeProperty
Proprietà dei metadati impostate su true Nessuno

Si applica a

Vedi anche