2011-11-18 27 views
5

Tengo un botón para crear animaciones al hacer clic?Crear un botón animado

enter image description here

con photoshop he creado una imagen de dos (activado y desactivado). Inserte el cuadro de imagen en Windows Forms y haga clic en evento ... Haga clic en los cambios de imagen de habilitado a deshabilitado, pero puede tener una animación?

De esta manera:

enter image description here

+0

¿Está basado en XAML o WinForms? La animación en XAML es fácil. – kol

+0

Metro? WinForms? WPF? Silverlight? ASP.Net? MonoTouch? – SLaks

+0

Windows Form o WPF – jolly

Respuesta

1

Parece que usted ha mencionado WinForms así voy a tratar eso. Sí, la animación es posible, pero en general va a ser un poco trabajo.

Parece haber una implementación de un marco de animación de propósito general (aunque limitado) en CodeProject. En los comentarios, schallos publicó una mejor implementación del código de reflexión utilizando árboles de expresiones.

El principio general es:

  • Utilice un cuadro de imagen para que pueda obtener el doble buffer
  • uso de un mando temporizador para controlar el repintado (llamando Invalidate() en su cuadro de imagen)
  • Es probable que desee añadir algo de relajación en la animación para que parezca más suave; se agrega un poco de aceleración cuando el usuario hace clic para recorrer un largo camino.
1

No se requiere un temporizador con un GIF.

Al utilizar los formularios de Windows, puede comenzar creando un GIF animado para cada botón. Tendría que incluir tanto la dirección hacia adelante como hacia atrás. Puede hacerlo a través de Photoshop a través del panel "Animación". En el evento de clic de PictureBox puede configurar la imagen para reproducir o detener.

El siguiente código configuraría su imagen en el cuadro inicial.

imgButtonDimension = new FrameDimension(imgButtonDimension.FrameDimensionsList[0]); 
imgButton.SelectActiveFrame(imgButtonDimension, 0); 
pictureBox.Image = imgButton;` 

Si este es el enfoque que le gustaría tener puedo proporcionar una mayor elaboración.