2012-09-06 15 views
18

Jak mogę obracać prostokąt w nieskończoność - TYLKO w ramach definicji xaml. Do tej pory znalazłem rozwiązanie z kodem, ale nie XAML: http://www.codeproject.com/Articles/23257/Beginner-s-WPF-Animation-Tutorial którego używam tak:WPF Obracanie animacji prostokątnej w XAML

private void Window_Loaded_1(object sender, RoutedEventArgs e) 
    { 
     var da = new DoubleAnimation(360, 0, new Duration(TimeSpan.FromSeconds(1))); 
     var rt = new RotateTransform(); 
     rect1.RenderTransform = rt; 
     rect1.RenderTransformOrigin = new Point(0.5, 0.5); 
     da.RepeatBehavior = RepeatBehavior.Forever; 
     rt.BeginAnimation(RotateTransform.AngleProperty, da); 
    } 

Ale w jaki sposób można to osiągnąć tylko XAML?

+2

http://www.galasoft.ch/mydotnet/articles/article-2006102701.aspx to wyjaśnia zarówno wersję kodu i XAML .. http://www.google.com! – KyorCode

+0

Wygląda na to, czego szukam, sprawdzę to. Dzięki. –

+1

Kod twojego pytania był odpowiedzią na moje pytanie. Dzięki! –

Odpowiedz

43

coś takiego

<Rectangle x:Name="rect1" RenderTransformOrigin="0.5, 0.5"> 
    <Rectangle.RenderTransform> 
    <!-- giving the transform a name tells the framework not to freeze it --> 
    <RotateTransform x:Name="noFreeze" /> 
    </Rectangle.RenderTransform> 
    <Rectangle.Triggers> 
    <EventTrigger RoutedEvent="Loaded"> 
     <BeginStoryboard> 
     <Storyboard> 
      <DoubleAnimation 
      Storyboard.TargetProperty="(Rectangle.RenderTransform).(RotateTransform.Angle)" 
      To="-360" Duration="0:0:1" RepeatBehavior="Forever" /> 
     </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger> 
    </Rectangle.Triggers> 
</Rectangle> 

Oczywiście można usunąć Loaded spust i uruchomić ten storyboard kiedy chcesz.

+0

Dzięki, to wszystko. –

+3

Potrzebowałem dodać CenterX = "16" CenterY = "16" do RotateTransform, aby wyśrodkować pochodzenie w moim prostokącie 32x32. – Dave

+7

FYI, jeśli jesteś tutaj, ponieważ próbowałeś tego i dostałeś błąd w animowaniu zamrożonej nieruchomości, to dlatego, że WPF agresywnie zamraża elementy w twoim drzewie. Aby podać wskazówkę dla frameworka, aby nie zamarzać transformacji, po prostu nadaj transformacji nazwę x: Name, którą ramka widzi i zakłada, że ​​odwołujesz się do niej z kodu i nie zamrozi jej. – Will