Анимация появления текста как при вводе
Материал из DRKB
Добавьте на форму 2 картинки, одну для горизонтального, другую для вертикального текста.
// Вертикальный вывод ( <Текст>, <Картинка для вывода>, <Задержка между буквами> )
procedure VerticalTypewriter(Text: string; Image: TImage; Delay: Integer);
var
x, y, i: Integer;
begin
Image.Canvas.Refresh();
Application.ProcessMessages();
y := 1;
for i := 1 to Length(AText) do
begin
Application.ProcessMessages();
y := y + Image.Canvas.TextHeight(Text[i]);
x := Image.Width div 2 - (Image.Canvas.TextWidth(Text[i]) div 2);
Image.Canvas.TextOut(x, y, Text[i]);
Sleep(Delay);
end;
end;
// Горизонтальный вывод ( <Текст>, <Картинка для вывода>, <Задержка между буквами>, <Пробел между буквами>)
procedure HorizontalTypewriter(Text: string; Image: TImage; Delay, Space: Integer);
var
x, y, i: Integer;
begin
Image.Canvas.Refresh();
Application.ProcessMessages();
x := 1;
for i := 1 to Length(Text) do
begin
Application.ProcessMessages();
y := Image.Picture.Height div 2 - (Image.Canvas.TextHeight(Text[i]) div 2);
x := x + Image.Canvas.TextWidth(Text[i]) + Space;
Image.Canvas.TextOut(x, y, Text[i]);
Sleep(Delay);
end;
end;
// Примеры вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
// <text> <image> <delay>
VerticalTypewriter('HELLO BIG-X', Image1, 100 );
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// <text> <image> <delay> <space>
HorizontalTypewriter('Hello Big-X', Image2, 100, 1 );
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03656