MatrixAnimationUsingPath.IsAngleCumulative Egenskap

Definition

Hämtar eller anger ett värde som anger om rotationsvinkeln för den animerade matrisen ska ackumuleras över upprepningar.

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

Egenskapsvärde

trueom animeringens rotationsvinkel ska ackumuleras över upprepningar; annars . false Standardvärdet är false.

Exempel

I följande exempel används två liknande MatrixAnimationUsingPath animeringar för att animera samma rektangel. Båda animeringarna har samma PathGeometry inställning, vilket gör att rektangeln roteras när den flyttas längs skärmen till höger, och båda animeringarna är inställda på att upprepas fyra gånger. Den första animeringens IsAngleCumulative egenskap är inställd på false, så rektangeln hoppar tillbaka till sin ursprungliga vinkel när animeringen upprepas. Den andra animeringens IsAngleCumulative egenskap är inställd på true; därför verkar rektangelns vinkel öka när animeringen upprepas, i stället för att hoppa tillbaka till dess ursprungliga värde.

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

Kommentarer

Om den här egenskapen är inställd truepå ackumuleras rotationsvinkeln för den animerade matrisen när animeringen upprepas. Om din sökväg är en liten båge får en kumulativ vinkel objektet att rotera kontinuerligt med varje upprepning i stället för att starta om rotationen. När det kombineras med en IsOffsetCumulative av truekan objektet verka tumla medan det studsar (beroende på vilken sökväg du anger). Relaterad information finns i IsOffsetCumulative.

Inställningen av den här egenskapen har ingen effekt om DoesRotateWithTangent är false.

Den här egenskapen avgör om animeringsmatrisens vinkel ackumuleras när animeringen upprepas på grund av dess RepeatBehavior inställning. Det gör inte att förskjutningen ackumuleras när animeringen startas om. Information om hur du skapar en animering för en tidigare animerings värden finns i IsAdditive.

Information om beroendeegenskap

Objekt Value
Identifierarfält IsAngleCumulativeProperty
Metadataegenskaper inställda på true Ingen

Gäller för

Se även