Efecto “messy” en un wrappanel

Hoy pondré un poco de código interesante. Es un efecto “messy”, para que veáis el efecto, os pongo una captura:

Realizarlo es muy sencillo. Lo que hacemos es en evento Loaded del wrappanel, rotamos la posición de todos los objetos. Para hacer más cool el cambio, lo hacemos con DoubleAnimation, que permite “visualizar” el movimiento.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
namespace Sdnert.Carousel
{
    public class BulkPanel : WrapPanel
    {
        private bool _bulk = false;

        public BulkPanel()
        {
            Loaded += new RoutedEventHandler(BigAndSmall_Loaded);
        }
        public bool bulk
        {
            get { return _bulk; }
            set
            {
                _bulk = value;
                Update();
            }
        }
        private void BigAndSmall_Loaded(object sender, RoutedEventArgs e)
        {
            Update();
        }
        public void Update()
        {
            Random ra = new Random(DateTime.Now.Millisecond);
            Random ra2 = new Random(DateTime.Now.Millisecond);
          
            foreach (UIElement child in Children)
            {
                int v = ra.Next(5) + 5;
               
                if (ra2.Next(2) == 1)
                {
                    v = v*-1;
                }
               
                if (bulk == false)
                {
                    v = 0;
                }
                RotateTransform rotate = new RotateTransform();
               
                DoubleAnimation dblAni = new DoubleAnimation();
                dblAni.From = (double) child.RenderTransform.GetValue(RotateTransform.AngleProperty);
                dblAni.To = v;
                dblAni.Duration = new Duration(TimeSpan.FromSeconds(2));
                ((ListBoxItem) child).RenderTransform = rotate;

                rotate.BeginAnimation(RotateTransform.AngleProperty, dblAni);
            }
        }
    }
}
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: