quinta-feira, 17 de janeiro de 2008

Criando TGLHudText em tempo de execução no GLSCene

Um pequeno exemplo de como criar uma TGLHudText em run time e posicionar a mesma.

Primeiro abra ou crie uma aplicação que contenha o cenário que desejar GLSceneViewer1, TGLCamera,etc...
Adicione um GLStoredBitmapFont e selecione a configuração de fonte que desejar.
Adicione uma HUDlabel, configure da forma que achar melhor, nesse exemplo alterei as seguintes configurações:

Bitmapfont : GLStoredBitmapFont; ///configuração de fonte escolhida
ModulateColor : clrBlack; ///cord a fonte
Visible : false; ///essa será a fonte padrão, as criadas em run time serão iguais a essa

Agora crie um vetor de labels e uma variável de controle.

Vlabel_Temp : array [1..100]of TGLHudText;//armazena as label criadas em run time...
Numlabelcriada : integer; //armazena quantas labels foram criadas pra destruir as mesmas

No evento que vc quiser, onkeypress, onclick de um button, etc vamos criar as labels....

if Numlabelcriada < 100 then ////testamos o numero Maximo de labels
begin
Numlabelcriada := Numlabelcriada+1; // Numlabelcriada inicia = 0 e Vlabel_Temp =1
Vlabel_Temp[Numlabelcriada]:= TGLHudText.Create(Self); //Criamos a label
Vlabel_Temp[Numlabelcriada].SetSubComponent(True);
GLCylinder1.AddChild(Vlabel_Temp[Numlabelcriada]);// de addchild de algum ///componente do plano q vc quizer, lembre q dependendo do plano q vc colocar a label ///pode ficar atrz de outros objetos da Scene....

Vlabel_Temp[Numlabelcriada].FreeNotification(Self);
///posicionando a label na Scene....
Vlabel_Temp[Numlabelcriada].Position.Y := y+15;
Vlabel_Temp[Numlabelcriada].Position.X := x+15;
///pegando as propriedades da label padrão, caso um dia deseja alterar a fonte fica mais fácil
Vlabel_Temp[Numlabelcriada].BitmapFont := lbl_Temp.BitmapFont;
Vlabel_Temp[Numlabelcriada].ModulateColor := lbl_Temp.ModulateColor;
/////texto q ira aparecer nas labels
Vlabel_Temp[Numlabelcriada].Text := ‘tessssssste';
Vlabel_Temp[Numlabelcriada].Visible := true;
end;


Seria isso.

No próximo post irei fazer elas se movimentarem de acordo com o mouse.

Nenhum comentário: