2009-12-14 3 views
3

Je fouille autour de l'animation dans WPF et je suis confus. Pour RectAnimation, By ne peut pas être négatif pour la hauteur et la largeur. Donc, si vous utilisez le mot-clé "By", les rectangles ne peuvent que croître (au lieu de "To")?Animation WPF - Pourquoi "By" n'a pas de valeur négative?

Voici quelques exemples de code:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > 
    <StackPanel Orientation="Vertical" HorizontalAlignment="Left"> 
    <Path Stroke="Black" StrokeThickness="1" Fill="LemonChiffon"> 
     <Path.Data> 
     <RectangleGeometry x:Name="myRectangleGeometry" Rect="0,200,100,100" /> 

     </Path.Data> 
     <Path.Triggers> 
     <EventTrigger RoutedEvent="Path.Loaded"> 
      <BeginStoryboard> 
      <Storyboard> 
       <!-- Animate the Rect property of the RectangleGeometry 
        which causes the rectangle to animate postion and size. --> 
       <RectAnimation 
       Storyboard.TargetName="myRectangleGeometry" 
       Storyboard.TargetProperty ="Rect" 
       Duration="0:0:2" FillBehavior="HoldEnd" 
       From="0,0,100,100" 
       By="600,50,200,-50" /> 
          ^
      </Storyboard>  | 
      </BeginStoryboard> | 
     </EventTrigger>  | 
     </Path.Triggers>   | 
    </Path>     | 
    </StackPanel>    | 
</Page>      | 
           | 
This returns an error, but only if it is negative. 
+0

Lol, downvote sans commentaire. Vous devez l'aimer quand les gens sont des poules. – Vaccano

+0

+1 offset ... quelqu'un m'a rabaissé dessus pour une raison quelconque ... –

Répondre

3

vous définissez en fait un rectangle dans la propriété By de l'objet RectAnimation. Un rectangle ne peut pas être créé avec des tailles négatives.

By="x,y,Width,Height"

Qu'est-ce que vous vouloir probablement faire peut être accompli en utilisant la propriété To à la place:

To="600,50,300,50"

+0

Je connaissais la propriété To, mais que se passe-t-il si vous voulez réduire d'un montant relatif? – Vaccano

+0

Je pense que c'est quelque chose que Microsoft dans leur sagesse infinie n'a peut-être pas pensé quand ils l'ont mis en place ... Quoi qu'il en soit, même si vous travaillez avec du code et non avec un balisage, ll faut faire les maths appropriées et utiliser la propriété 'To' au lieu de la propriété' By'. –

+0

Je ne l'aime pas, mais vous avez raison .... – Vaccano