2012-09-06 11 views
18

¿Cómo puedo rotar un rectángulo infinitamente? SÓLO dentro de la definición de xaml. Hasta ahora he encontrado una solución con el código, pero sin xaml: http://www.codeproject.com/Articles/23257/Beginner-s-WPF-Animation-Tutorial que utilizo como esto:WPF Girar animación de rectángulo en 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); 
    } 

Pero ¿cómo puedo lograr esto con sólo el XAML?

+2

http://www.galasoft.ch/mydotnet/articles/article-2006102701.aspx esto explica el código subyacente y la versión XAML .. http://www.google.com! – KyorCode

+0

Parece lo que estoy buscando, lo comprobaré. Gracias. –

+1

El código de su pregunta fue una respuesta a mi pregunta. ¡Gracias! –

Respuesta

43

Algo como esto

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

Por supuesto que puede eliminar Loaded gatillo y ejecutar este guión cuando lo desee.

+0

Gracias, eso es todo. –

+3

Necesitaba agregar CenterX = "16" CenterY = "16" al RotateTransform para centrar el origen en mi rectángulo de 32x32. – Dave

+7

FYI, si está aquí porque ha intentado esto y está recibiendo un error sobre la animación de una propiedad congelada, eso se debe a que WPF está congelando agresivamente elementos en su árbol ahora. Para proporcionar una pista al marco para que no se congele la transformación, simplemente déle a su transformación una x: Nombre, que ve el marco y asume que hará referencia al mismo desde el código y, por lo tanto, no lo congelará. – Will