En esta sección de Código Fuente en Delphi vamos a explicar cómo podemos mostrar una imagen ".gif" animada en nuestras aplicaciones.
Para ello, he escrito esta pequeña app de ejemplo.
En primer lugar, debemos incluir la imagen gif que queramos mostrar en la ventana de nuesta aplicación como un recurso de nuestra app. Para ello creamos un script de recursos, esto es un archivo de texto con la extensión ".rc" y cuyo contenido será una línea por cada gif que queramos incluir como recurso, en nuestro caso es una sola línea:
Cuando tengamos el guión de recursos debemos compilar ese archivo ".rc" para obtener un archivo ".res" que será el que incluiremos en la app. Para ello, en la línea de comandos escribimos:
brcc32 ruedas.rc
Con eso obtendremos el archivo ruedas.res Este archivo tendremos que incluirlo dentro de nuestra aplicación con la sentencia {$R ruedas.res}
Para poder usar archivos gif necesitamos incluir en la clausula uses la unit: gifimage.pas, definiremos en nuestro form un objeto tipo TGifImage que posteriormente en el evento FormCreate de nuestra ventana podremos crear e inicializar con las instrucciones gif:= TGifImage.Create;
Una vez creado el objeto tipo TGifImage debemos cargarlo con el archivo gif que tenemos guardado en nuestros recursos de la aplicación, esto lo hacemos con la instrucción "gif.LoadFromResourceName(hInstance, 'RUEDAS');"
Si queremos animar el gif hacemos "gif.Animate:=true;" para pararlo hacemos "gif.Animate:=false;"
Todas estas maniobras que hemos hecho no son visibles en nuestra ventana, se hacen en la memoria donde está alojado el objeto Gif, para mostrarlo en la ventana lo que hacemos es asignar el objeto "gif" a un objeto Picture correspondiente a una TImage de nuestra ventana, esto se hace con la instrucción "ImgRuedas.Picture.Assign(gif);"
En la siguiente imagen puedes ver un ejemplo de uso de esta app.
A continuación, puedes ver el código completo de la app, y si lo deseas puedes descargarlo todo (código y app) en un archivo "zip".
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, gifimage, StdCtrls, ExtCtrls; type TForm1 = class(TForm) ImgRuedas: TImage; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } gif: tGifImage; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {$R ruedas.res} procedure TForm1.Button1Click(Sender: TObject); begin gif.Animate:=true; ImgRuedas.Picture.Assign(gif); end; procedure TForm1.Button2Click(Sender: TObject); begin gif.Animate:=false; ImgRuedas.Picture.Assign(gif); end; procedure TForm1.FormCreate(Sender: TObject); begin gif:= TGifImage.Create; gif.LoadFromResourceName(hInstance, 'RUEDAS'); gif.Animate:=false; ImgRuedas.Picture.Assign(gif); end; end.