Постановка задачи. Создайте проект, в окне которого в стиле бегущей строки прокручивается битовый образ (рис. 54).
Рис. 54. Проект «Бегущая строка»
Реализация. Положите на форму таймер и кнопку для выхода. Подготовьте битовый образ какого-нибудь текста и сохраните его как растровый рисунок и как файл ресурса. Код приложения приведен полностью.
unit unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer: TTimer;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R hbaner.res} // файл ресурсов, в котором находится
// битовый образ. Его можно создать при помощи Image Editor
{ Высота битового образа в файле ресурсов
не может быть меньше 32 пикселей }
const
WB = 350; // ширина области вывода картинки на форме
TP = 573; // период рисунка бегущей строки
var
pic :TBitMap; // картинка − бегущая строка
sRect,dRect: TRect; // область источник
t: integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
pic := TBitMap.Create;
pic.LoadFromResourceName(HInstance,'BANER2');
// загрузили картинку
dRect := Bounds(0,0,WB,pic.Height); // область, в которой
// бежит строка
sRect := Rect(0,0,TP,pic.Height); // отображаемая в данный
// момент область рисунка
t:=0;
end;
// Сигнал от таймера
procedure TForm1.TimerTimer(Sender: TObject);
begin
Canvas.CopyRect(dRect,pic.Canvas,sRect);
// отобразили часть картинки
inc(t);
if t = TP // длина ролика
then t:=0;
sRect := Bounds(t,0,WB,pic.Height); // следующий кадр
end;
// Щелчок на кнопке OK
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;
end.