Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи_Делфи.docx
Скачиваний:
9
Добавлен:
14.08.2019
Размер:
1.17 Mб
Скачать

Глава 11

Темы проектов для самостоятельной работы

11.1. Оформление проекта

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;