WPF Rotar el rectángulo de animación en XAML

¿Cómo puedo girar 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 no xaml:
http://www.codeproject.com/Articles/23257/Beginner-s-WPF-Animation-Tutorial
el que yo uso como esta:

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

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

InformationsquelleAutor Bruno Bieri | 2012-09-06

1 Kommentar

  1. 56

    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, usted puede quitar Loaded gatillo y ejecutar este guión siempre que lo desee.

    • Gracias, eso es todo.
    • Tuve que agregar CenterX=»16″ CenterY=»16″ para la RotateTransform de centro el origen de mi 32×32 rectángulo.
    • Para su INFORMACIÓN, si estás aquí porque usted ha intentado esto y usted está recibiendo un error acerca de la animación de un congelado de la propiedad, que es porque WPF es agresivamente la congelación de los elementos en el árbol de ahora. Para proporcionar una sugerencia para que el marco no congelar la transformación, simplemente dar a su transformación con una x:Name, que el marco se ve y se supone que va a ser la referencia de código y por tanto no la congele.
    • Para los noobs como yo, que esto también tiene un trazo, grosor de trazo, color de fondo, tamaño, etc. <Rectangle x:Name="rect1" RenderTransformOrigin="0.5, 0.5" Width="50" Height="50" Stroke="Black" StrokeThickness="10">
    • Es más práctico el uso de RenderTransformOrigin=".5, .5" y prevenir el manual de posicionamiento tanto como usted puede.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea