Читайте также:
|
|
11.1.1. Проект «Бегущая строка»
Постановка задачи. Создайте проект, в окне которого в стиле бегущей строки прокручивается битовый образ (рис. 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.
11.1.2. Проект «Титры»
Постановка задачи. Напишите программу, в окне которой прокручивается текст, подобный титрам в конце или начале фильма (рис. 55).
Рис. 55. Проект «Титры»
Реализация. Текст должен быть сохранен в файле с расширением bmp. В данном примере это файл baner.bmp. На форму положите таймер.
const
HB = 58; // Высота области вывода картинки на форме
HR = 274; // Высота плаката
{ В простейшем случае плакат в файле должен быть продублирован по вертикали два раза. Высота прокручиваемой картинки (битового образа в файле) должна быть больше или равна HB+HR. }
var
pic: TBitMap; // Прокручиваемая картинка
sRect, dRect: TRect; // Область − источник
t: integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
pic:= TBitMap.Create;
pic.LoadFromFile('baner.bmp'); // Загрузить картинку
dRect:= Bounds(10, 10, pic.Width, HB); { Положение и размер области, в которой прокручивается картинка }
sRect:= Rect(0,0,pic.Width,HB); // Отображаемая область
t:=0;
end;
// Сигнал от таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Canvas.CopyRect(dRect,pic.Canvas,sRect); { Отобразить часть картинки }
inc(t);
if t = HR then // Длина ролика
t:=0;
sRect:= Bounds(0,t,pic.Width,HB); // Следующий кадр
end;
Дата добавления: 2015-08-20; просмотров: 34 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Обработка ошибок времени выполнения программы | | | Темы проектов |