Quisiera en este hilo aunar las dos implementaciones que he publicado en el foro de TGifViewer para dejar claras las similitudes y grandes diferencias. En el foro he publicado el hilo principal de TGifViewer y otro llamado New GifViewer que no es un componente VCL pero se encapsula en una clase:
1º TGifViewer un visor versátil de animaciones Gif
2º New GifViewer, versión GDI+ polivalente
Cometí la torpeza de llamarlos a ambos TGifViewer, y digo torpeza porque parece que doy a entender que ambos son la misma cosa o derivado uno de otro, cuando en realidad no tienen nada que ver salvo que visualizan animaciones gif.
El primero está basado en la clase TGif, una clase especializada en leer archivos gif, decompilarlos y servir los fotogramas al visor. Esta clase no usa la API de Windows en su zona más baja con lo que puede tener portabilidad a otros S.O.
El segundo se basa en el GDI+ de Windows, permite ejecutables algo más pequeños pero no es portable.
GDI+ trabaja excelentemente con los gif pero no es compatible con todos ellos. En concreto para el DisponsalMethod tipo 2 y 3. Estos métodos se especifican en el fotograma Gif e indica al visor que tiene que hacer cuando se termina la visualización del mismo.
0 – Sin especificar, el decodificador no hará acciones tras terminar la visualización de la imagen.
1 – Sin acción, la imagen no se elimina
2 – Se restaura el color de fondo
3 – Se restaura la imagen previa.
GDI plus y algunos visores modernos no implementan bien los modos 2 y 3.
Veamos un ejemplo de visualización en DisponsalMethod tipo 2
Ahora veamos un Gif con DisponsalMethod tipo 3
Queda claro que GDI no se comporta bien con estos tipos de gif de DisponsalMethod tipo 2 y 3.
Esta es una de las poderosas razones que me inclinaron a insistir en mi clase TGif y el componente TGifViewer. He ido actualizando el tema para ser todo lo compatible con Gif antiguos y modernos.
Si alguno quiere experimentar con los DisponsalMethods puede hacerlo con GifCreator que está también basado en la case TGif.
Saludos.