Rotação de Imagem - TrackBar no Firemonkey

Veja neste artigo como realizar um efeito de rotação em uma imagem utilizando o Firemonkey e a controlar a velocidade dessa rotação através de um componente TTrackBar.

Olá Pessoal! Neste artigo iremos aprender a realizar um efeito de rotação em uma imagem utilizando o Firemonkey e a controlar a velocidade dessa rotação através de um componente TTrackBar.

Inicialmente, no Delphi XE2, crie uma nova aplicação HD Firemonkey e adicione ao form principal os seguintes componentes e altere as seguintes propriedades:

TImage (Qde = 1):
Align: alClient;
Bitmap: Utilize uma imagem de sua preferência. No caso, foi utilizada a Figura 1.
Name: Image1;

TTrackBar (Qde = 1):
Frequency: 0,1;
Height: 15;
Max: 10;
Min: 0;
Name: TBVelocidade;
Orientation: orHorizontal;
Value:0;
Width: 257;

TTimer (Qde = 1):
Interval: 1000;
Enabled: true;
Name: RotationTimer;


Figura 1: Imagem utilizada no exemplo

Ajuste os componentes até que assumam as características da figura abaixo:


Figura 2: Características Visuais

A seguir, precisaremos declara algumas variáveis globais para gerenciar a animação. Então, declare as seguintes variáveis como públicas ou privadas no form:

Listagem 1: Declaração de variáveis

var Angle : Single = 0; //ângulo de Rotação; PrevTime : Double = 0; //tempo anterior CurrTime : Double; //tempo atual DT: Double; //Diferença entre tempos V : Double; //Velocidade de Rotação

Feito isso, declare na sessão private do formulário o seguinte procedure:

Listagem 2: Declaração da procedure AppIdle

procedure AppIdle(Sender: TObject; var Done: Boolean); //Pressione Ctrl + Shift + C

Esta procedure será a responsável pela rotação da imagem. Insira o seguinte código no corpo do método:

Listagm 3: Implementação do método

procedure TFrmRotacao.AppIdle(Sender: TObject; var Done: Boolean); begin CurrTime := GetTime; //pega o tempo presente if PrevTime <> 0 then begin DT := CurrTime-PrevTime; end; PrevTime := CurrTime; V := 4000000* DT; //velocidade Angle := Angle + TBVelocidade.Value*V; if Angle >= 360 then begin Angle := 0; end; Image1.RotationAngle := Angle; end;

Nota: A velocidade de rotação depende diretamente do valor da TrackBar TBVelocidade através da sua propriedade Value.

Para que o efeito de rotação funcione no Windows, basta adicionar no evento OnCreate do formulário o seguinte código:

Listagem 4: Ativando a animação no Windows

procedure TFrmRotacao.FormCreate(Sender: TObject); begin Application.OnIdle := AppIdle; end;

Para que o Efeito de Rotação funcione no Mac OSX, devemos implementar o seguinte código no evento OnTime de RotationTimer (TTimer):

Listagem 5: Ativando a animação no MAC OSX

procedure TFrmRotacao.RotationTimerTimer(Sender: TObject); var Done : Boolean; begin AppIdle(Self,Done); // MacOSX end;

O resultado final é bastante interessante e um print screen de seu funcionamento nos dois sistemas operacionais suportados é exibido nas figuras a seguir.


Figura 3: Efeito de Rotação no Windows


Figura 4: Efeito de Rotação no Mac OSX Lion

Agora é com você! Solte a sua imaginação. Um grande abraço e até o próximo artigo!

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados