ПОРЯДОК ВЫПОЛНЕНИЯ

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.

  1. Изучить теоретический материал
  2. Выполнить примеры из теоретической части.

Форма отчёта:Отчет выполняется в тетрадях по практическим работам в письменном виде. Программа отлаживается в IDE Delphi и в виде файлов копируется на сетевой диск.

 

Содержание отчета:

19. Тема работы.

20. Цель работы.

По каждому из заданий:

21. Условие задачи.

22. Постановка задачи.

23. Текст программного кода на языке OBJECT PASCAL.

24. Результаты расчетов (входные и выходные данные).

 

Система оценки:двухбалльная.

 

 

Контрольные вопросы

 

  1. Понятие холста.
  2. Где будет выводится графика?
  3. Как работают карандаш и кисть?
  4. Понятие ьультипликации.

 

Список использованной литературы

 

10. Голицина О.Л., Попов И.И. Основы алгоритмизации и программирования: Учебное пособие. - М.: Форум: Инфра-М, 2002.

11. Фленов М.Е. Библия Delphi. - 3-е изд. Перераб. И доп. - СПб.: БХВ-Петербург, 2011.