Jak animować tekst z cieniem na formie ?
10:13Wed, 3 January 2007 Cała procedura jest poniżej. Tworzona jest Bitmapa na której rysowane są dwa teksty: jeden w kolorze szarym i jeden w kolorze czerwonym. Oba teksty przesunięte są od siebie o jeden piksel co sprawia wrażenie cienia. Oba teksty (szary - cień i czerwony - tekst mają tło ustawione jako przezroczyste [bsClear]). Tekst przesuwa się w lewo i jest trzykrotnie wyświetlany w jednym cyklu.
procedure TFrAbout.animuj(tekst: string);
var
Bitmapa: TBitmap;
x,x2,y : integer;
txtmod : string;
begin
AnimujRun := True;
Bitmapa := TBitmap.Create;
Bitmapa.Canvas.Font.Size := 14;
Bitmapa.Canvas.Font.Name := 'Courier New';
txtmod := tekst + ' ' + tekst + ' ' + tekst;
Bitmapa.Width := Bitmapa.Canvas.TextWidth(txtmod)+2;
Bitmapa.Height := Bitmapa.Canvas.TextHeight(txtmod);
Bitmapa.Canvas.FillRect(Rect(0,0,Bitmapa.Canvas.TextWidth(txtmod)+2,Bitmapa.Canvas.TextHeight(txtmod)));
Bitmapa.Canvas.Brush.Color := clRed;
x := Image1.Width;
y := 0;
Repeat
Application.ProcessMessages;
Sleep(10);
Bitmapa.Canvas.Brush.Style := bsClear;
Bitmapa.Canvas.Font.Color := clRed;
Bitmapa.Canvas.TextOut(1,1,txtmod);
Bitmapa.Canvas.Brush.Style := bsClear;
Bitmapa.Canvas.Font.Color := clGray;
Bitmapa.Canvas.TextOut(0,0,txtmod);
Image1.Canvas.Draw(x,y,Bitmapa);
Dec(x);
until (x = -3*Image1.Canvas.TextWidth(txtmod)) or (MainForm.Done);
Bitmapa.Free;
AnimujRun := False;
end;
Póki co brak pytań w FAQ.Skomentuj
Aby zamieścić komentarz, proszę włączyć JavaScript - niestety roboty spamujące dają mi niezmiernie popalić.
Komentarze czytelników
Nie ma jeszcze żadnych komentarzy.