Esse artigo faz parte da revista Clube Delphi edição 26. Clique aqui para ler todos os artigos desta edição

 

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

GIFs animados no Linux

Animações leves com Qt e CLX

Como trabalhar com GIFs animados, usando diretamente o Qt no Kylix 1 e o novo componente TAnimate no Kylix 2

Quando se quer apresentar uma animação no Windows, pode-se usar o TMediaPlayer, que permite mostrar arquivos AVI numa janela especificada. Além disso, existem diversos componentes de terceiros que possibilitam visualizar arquivos GIFs animados. Na CLX, estes componentes não estão disponíveis e não se pode mostrar AVIs. Porém, podemos mostrar GIFs animados sem muita dificuldade, pois o suporte a eles é permitido pela biblioteca Qt.

Este artigo mostra alguns conceitos envolvidos na apresentação de animações GIF. Embora programas compilados no Kylix sejam compatíveis com o Delphi 6, os conceitos mostrados aqui não podem ser portados, provavelmente porque a biblioteca Qt não foi compilada com suporte a GIFs no Delphi.

Labels na CLX

Na VCL, o componente TLabel é muito simples. Este componente, inclusive, não tem um handle de janela – é apenas desenhado no Canvas do componente pai. O TLabel da CLX não é criado da mesma maneira que seu correspondente na VCL. Na CLX, ele encapsula o componente QLabel, do Qt. Quando analisamos o componente QLabel, notamos que ele é muito mais poderoso do que aparenta ser.

Uma funcionalidade que não aparece inicialmente é a capacidade de mostrar bitmaps ou animações, usando-se o formato GIF. O Qt tem uma classe chamada QMovie, que permite carregar e mostrar uma imagem animada. Uma vez criada a instância de um QMovie, você pode ligá-la a um QLabel, usando a função QLabel_setMovie. Quando você atribui a animação ao TLabel, ele passa a mostrá-la no Form.

Animação nos Labels

Iremos criar uma aplicação que mostra um arquivo GIF animado num TLabel. Crie uma nova aplicação com File|New Application e mude a propriedade Caption do Form principal para "GIF animado". Adicione um TLabel e mude suas propriedades AutoSize, Width e Height para False, 140 e 160, respectivamente. Mude sua propriedade BorderStyle para bsSunkenPanel, de maneira que fique com uma borda rebaixada. Aqui podemos ver uma primeira diferença entre os dois TLabels: na CLX, podemos colocar uma borda no texto.

A carga e a atribuição do GIF animado ao TLabel serão feitos na criação do Form. Selecione o evento OnCreate do Form e digite:

 

procedure TForm1.FormCreate(

  Sender: TObject);

var

  NomeGIF : WideString;

begin

  // Cria o QMovie a partir do GIF

  NomeGIF := 'penguin1.gif';

  AniGIF :=

    QMovie_create(@NomeGIF,1024);

 

  // Configura a cor de fundo

  QMovie_setBackGroundColor(

    AniGIF,QColor(clBtnFace));

 

  // Atribui a animação ao label

  QLabel_setMovie(

    Label1.Handle,AniGIF);

end;

 

Inicialmente criamos a instância do componente QMovie com a função QMovie_create. Passamos para a função um ponteiro com o nome do arquivo a ser aberto e o tamanho do buffer de dados. Em seguida, configuramos a cor a ser usada para desenhar o fundo da imagem. Finalmente, conectamos o ...

Quer ler esse conteúdo completo? Tenha acesso completo