Como poner un Gif Animado
#1
Escrito 28 abril 2011 - 07:42
Gracias por su atención...
#2
Escrito 28 abril 2011 - 07:55
Aquí puede que encuentres lo que buscas
http://delphiaccess....nimaciones-gif/
#3
Escrito 28 abril 2011 - 06:34
quisiera saber si hay una manera de hacerlo en lazarus
se que la hay pero no se como.....
he probado con una componente que se llama "TGifAnim" pero no se inserta en el IDE da error..
porfis si me pueden dar la mano...
#5
Escrito 29 abril 2011 - 12:47
animatedgif.pas
membitmap.pas
un ejemplito no cairía mal.
#6
Escrito 13 mayo 2011 - 07:50
Gracias a todos, porfin pude poner un gif en lazarus, después de estar
intento tras intento y de bajarme tantos complementos como Units que al final
no puede integrarlos en Lazarus y si se integraban daban error...
Y como no pude realizar mi objetivo en sí (poner gif en form) con todo lo demás
opte por hacer lo siguiente (gracias a mightydragon_lord por la idea):
agarré el dichoso GIF y le extraje sus FRAMES (es decir las imágenes que
lo componen) con el programa "GIFFrame"....y traté de usar el Ttimer + el timage para
darle solución a mi problema....
Acontinuación les comparto mis dos pruebas que tuvieron éxito:
PRIMER INTENTO: (Ttimer + timage + 3 imagenes en PNG)
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls; type { TForm1 } TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; indice: integer; archivo: string; implementation {$R *.lfm} { TForm1 } procedure TForm1.Timer1Timer(Sender: TObject); begin if (indice < 1) or (indice > 3) then indice:= 1; archivo:= 'imagen'+inttostr(indice)+'.PNG'; image1.Picture.LoadFromFile(archivo); indice:= indice + 1; end; end.
En esta primera prueba tuve que tener las tres imágenes PNG en el mismo directorio
pues si separaba el programa de las imágenes salía ERROR....
SEGUNDO INTENTO: (ttimer + timage + 'archivo de recursos')
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, lresources, StdCtrls; type { TForm1 } TForm1 = class(TForm) Image1: TImage; Label1: TLabel; Timer1: TTimer; procedure Image1Click(Sender: TObject); procedure Label1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; indice: integer; archivo: string; implementation {$R *.lfm} { TForm1 } procedure TForm1.Image1Click(Sender: TObject); begin end; procedure TForm1.Label1Click(Sender: TObject); begin end; procedure TForm1.Timer1Timer(Sender: TObject); begin if (indice < 1) or (indice > 3) then indice:= 1; archivo:= 'imagen'+inttostr(indice); image1.Picture.LoadFromLazarusResource(archivo); indice:= indice + 1; //image1.Picture.LoadFromLazarusResource('imagen1'); end; initialization {$I monchito.lrs} end.
Ahora si se dan cuenta es este segundo programa no use las Imágenes PNG
sino más bien un archivo de RECURSO de lazarus en el cual metí las imagenes
y al final todo se compilaba como un solo programa (las imágenes estarían ya dentro
de mi programa y no habría dependencias)
como lo hice..?
Si gustan pueden pasar por aca:
http://wiki.lazarus....us_Resources/es
ahí lo explican....
pero por siaca les cuento como lo hice:
1. me fui a C:\lazarus\tools
2. dentro de esta carpetita hay un archivo llamado lazres.lpi
3. abren "lazres.lpi" y lo contruyen desde lazarus
4. ahora en C:\lazarus\tools aparecerá un programa llamado lazres.exe
5. lazres.exe será el compilador para Crear RECURSOS para lazarus
6. yo tenía tres imagenes PNG y el recurso lo cree así (desde cmd deben estar en C:\lazarus\tools)
----------------------------------------------------------------------------
C:\lazarus\tools>lazres monchito.lrs imagen1.png imagen2.png imagen3.png
----------------------------------------------------------------------------
al final crea mi recurso que se llama "monchito.lrs" este archivo es el único que nos interesa....
ahora lo único que tengo que hacer es unirlo a mi programa agregandolo en las
siguientes ubicaciones del código fuente:
en:
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
lresources; <--- agregamos este código osea "lresources"
ahora al final del código fuente agregamos esto:
end;
initialization <----- lo agregamos
{$I monchito.lrs} <----- agregamos nuestro recurso
end. <-- final de todo
bueno y para utilizarlo todo dentro de nuestro programa pueden ver mi código
de arriba.....
agradezco a todos por su apoyo
en especial a egostar y mightydragon_lord......
y les mando mi programa con las tres imágenes para que me crean....
#7
Escrito 14 mayo 2011 - 02:36
Gracias a todos, porfin pude poner un gif en lazarus...
...agarré el dichoso GIF y le extraje sus FRAMES (es decir las imágenes que
lo componen) con el programa "GIFFrame"....y traté de usar el Ttimer + el timage para
darle solución a mi problema....
Me alegro de que hayas conseguido implementar tu código .
Aquí puede que encuentres lo que buscas
http://delphiaccess....nimaciones-gif/
Quizás si hubieses indagado mas en lo que te propuso seoane, hubieses dado menos vueltas... No intervine pensando que buscabas un componente hecho y terminado para lazarus, pero ahora que veo que no te importaba realizar tu propia implementación quizás te interese retomar este punto.
TGifViewer es un componente para delphi y Builder, pero lo puedes adaptar a lazarus. Se basa en la clase TGIF, una clase general que puedes adaptar a lazarus con la que puedes extraer los frames independientes y otros muchos datos del archivo gif. TGIF. TGifViewer muestra los frames ayudándose de un Timer, tal y como terminaste haciendo tu, pero no le hacen falta recursos ni tratamientos externos del GIF, de eso se encarga la clase TGIF
TGIF es casi independiente de la API de Windows. En su versión para delphi creo recordar que sólo la use para reservar memoria (VirtualAlloc y VirtualFree) que fácilmente puedes sustituir para independizarlo de windows.
Si te animas puedes realizar tu componente para lazarus .
Saludos.