jueves, 6 de febrero de 2014

GIF animado en WPF (animación continua)

Hace tiempo que quería colocar una especie de espera mientras se carguen los datos del servidor, se me ocurrió varias cosas, pero con el fin de optimizar la velocidad y no consumir recursos al final decidí colocar una especie de manto negro semitransparente que inhabilitara los demás controles con un simple gif animado que dijera "Cargando....".

Parecía fácil, pero no fue tanto así, por ahí googleando encontré 2 soluciones referenciar Windows Forms con un PictureBox, que no es lo mio mezclar WinForms con Ventanas WPF, y lo otro utilizar un control WPF llamado MediaElement que parecia lo mas coherente:

<MediaElement LoadedBehavior="Play" Source="file://C:/anim.gif" />

Problema: Solo reproduce 1 vez el gif animado y luego se detiene.

Seguí navegando por ahí y encontré código adicional, que permite un loop infinito en MediaElement, pero solo sirve para vídeos o sonido y no aplica a gif animados.

De tanto buscar y no encontrar, no podía creer que ha nadie le haía pasado esto antes, al final estaba decidido a crear un control nativo wpf que permita resolver este problema, pero encontré la solución ya que algún lunatico había inventado la rueda antes que yo (gracias por ahorrarme gastar mi teclado).

Descarga de esta pagina http://wpfanimatedgif.codeplex.com/releases una demo de como funciona, incluye una dll (el momento de escribir esta la versión estable es la 1.4.4) que sirve para agregar a tus proyectos.

Agrega una referencia en tu proyecto a esta DLL y modifica es esta manera tu xaml, mejor te dejo una captura.


y vuala, ya tienes un GIF animado continuo.