Sdílet prostřednictvím


MatrixAnimationUsingPath.IsAngleCumulative Vlastnost

Definice

Získá nebo nastaví hodnotu, která určuje, zda by se úhel otočení animované matice měl nahromažďovat v průběhu opakování.

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

Hodnota vlastnosti

Boolean

truepokud by se úhel otočení animace měl kumulovat při opakování; v opačném případě . false Výchozí formát je false.

Příklady

Následující příklad používá dvě podobné MatrixAnimationUsingPath animace k animaci stejného obdélníku. Obě animace mají stejné PathGeometry nastavení, což způsobí, že se obdélník otočí tak, jak se pohybuje podél obrazovky doprava, a obě animace se nastaví tak, aby se opakovaly čtyřikrát. První vlastnost animace IsAngleCumulative je nastavena na false, takže obdélník přejde zpět do původního úhlu, když se animace opakuje. Druhá vlastnost animace je nastavena na true; v důsledku toho se zobrazí, že se úhel obdélníku zvýší, když se animace IsAngleCumulative opakuje, a ne přeskočí zpět na původní hodnotu.

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

Poznámky

Pokud je tato vlastnost nastavena na true, úhel otočení animované matice se shromáždí při opakování animace. Pokud je cesta malý oblouk, kumulativní úhel způsobí, že se objekt bude nepřetržitě otáčet s každým opakováním místo restartování otočení. V kombinaci s objektem IsOffsetCumulative truese může zdát, že se při skákání posouvá (v závislosti na zadané cestě). Související informace naleznete v tématu IsOffsetCumulative.

Nastavení této vlastnosti nemá žádný vliv, pokud DoesRotateWithTangent je false.

Tato vlastnost určuje, zda se úhel matice animace hromadí, když se animace opakuje z důvodu jeho RepeatBehavior nastavení; nezpůsobí, že se posun nahromáždí, když se animace restartuje. Informace o tom, jak vytvořit animaci z hodnot předchozí animace, najdete v tématu IsAdditive.

Informace o vlastnosti závislosti

Pole identifikátoru IsAngleCumulativeProperty
Vlastnosti metadat nastavené na true Žádné

Platí pro

Viz také