ПОРЯДОК ВЫПОЛНЕНИЯ
End.
Begin
Begin
Begin
Var
Const
Implementation
Var
Public
Private
Type
Uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
TForm1 = class(TForm)
Timer1: TTimer;
procedureFormActivate(Sender: TObject);
procedureTimer1Timer(Sender: TObject);
{ Private declarations }
{ Public declarations }
end;
Form1l: TForm1;
($R *.DFM}
FILMFILE = 'film2.bmp'; // фильм — bmp-файл
N_KADR=12; // кадров в фильме (для данного файла)
Film: TBitMap; // фильм — все кадры
WKadr,HKadr: integer; // ширина и высота кадра
CKadr: integer; // номер текущего кадра
RectKadr: TRect; // положение и размер кадра в фильме
Rect1 : Trect; // координаты и размер области отображения фильма
procedureTForm1.FormActivate(Sender: TObject);
Film := TBitMap.Create;
Film.LoadFromFile(FILMFILE);
WKadr := Round(Film.Width/N_Kadr);
HKadr := Film.Height;
Rect1 := Bounds(10,10,WKadr,HKadr);
Ckadr:=0;
Form1.Timerl.Interval := 150; // период обновления кадров — 0.15 с
Form1.Timerl.Enabled:=True; // запустить таймер
end;
// отрисовка кадра procedureDrawKadr;
// определим положение текущего кадра в фильме
RectKadr:=Bounds(WKadr*CKadr,0,WKadr,HKadr);
// вывод кадра из фильма
Form1.Canvas.CopyRect(Rect1,Film*.Canvas,RectKadr);
// подготовимся к выводу следующего кадра
CKadr := CKadr+1;
if CKadr = N_KADR thenCKadr:=0;:
end;
// обработка сигнала от таймера
procedureTForm1.Timer1Timer(Sender: TObject);
DrawKadr;
end;
Программа состоит из трех процедур. Процедура TForm1. FormActivate создает объект Film и загружает в него фильм — BMP-файл, в котором находятся кадры фильма. Затем, используя информацию о размере загруженного битового образа, процедура устанавливает значения характеристик кадра: высоту и ширину.
После этого создается объект Kadr (типа TBitMap), предназначенный для хранения текущего кадра. Следует обратить внимание, что после создания объекта Kadr принудительно устанавливаются значения свойств width и Height. Если этого не сделать, то созданный объект будет существовать, однако память для хранения битового образа не будет выделена. В конце своей работы процедура TForml. FormActivate устанавливает номер текущего кадра и запускает таймер.
Основную работу в программе выполняет процедура DrawKadr, которая выделяет из фильма очередной кадр и выводит его в форму. Выделение кадра и его отрисовку путем копирования фрагмента картинки с одной поверхности на другую выполняет метод copyRect (рис. 10.21), которому в качестве параметров передаются координаты области, куда нужно копировать, поверхность и положение области, откуда нужно копировать. Положение фрагмента в фильме, т. е. координата х левого верхнего угла, определяется умножением ширины кадра на номер текущего кадра. Запускает процедуру DrawKadr процедура TForm1.Timer1Timer, обрабатывающая событие OnTiner.
- Изучить теоретический материал
- Выполнить примеры из теоретической части.
Форма отчёта:Отчет выполняется в тетрадях по практическим работам в письменном виде. Программа отлаживается в IDE Delphi и в виде файлов копируется на сетевой диск.
Содержание отчета:
19. Тема работы.
20. Цель работы.
По каждому из заданий:
21. Условие задачи.
22. Постановка задачи.
23. Текст программного кода на языке OBJECT PASCAL.
24. Результаты расчетов (входные и выходные данные).
Система оценки:двухбалльная.
Контрольные вопросы
- Понятие холста.
- Где будет выводится графика?
- Как работают карандаш и кисть?
- Понятие ьультипликации.
Список использованной литературы
10. Голицина О.Л., Попов И.И. Основы алгоритмизации и программирования: Учебное пособие. - М.: Форум: Инфра-М, 2002.
11. Фленов М.Е. Библия Delphi. - 3-е изд. Перераб. И доп. - СПб.: БХВ-Петербург, 2011.