АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Тистинг 10.12. Мультик (использование метода CopRect)

Прочитайте:
  1. A. метода разбивки по компонентам
  2. S: Какой признак не характерен для протрав, используемых в сложных методах окраски
  3. Важный недостаток микроскопического метода диагностики инфекций – его недостаточная информативность в связи с морфологическим сходством многих видов
  4. Вкажіть, які методики відповідають основним методам копроскопічної діагностики за гельмінтозів.
  5. ВЛИЯНИЕ ГЕНИТАЛЬНЫХ ИНФЕКЦИЙ НА ЭФФЕКТИВНОСТЬ ЛЕЧЕНИЯ МЕТОДАМИ ВРТ
  6. ВоЗМОЖНОСТИ метода микроскопиЧеского исследованиЯ при выявлении кислотоустойЧивых микобактериий
  7. Выбор метода лечения
  8. Выбор метода обезболивания
  9. Выбор метода операции при язвах желудка и 12-перстной кишки.
  10. ВЫБОР МЕТОДА ОПЕРАЦИИ У БОЛЬНЫХ С ГАСТРОДУОДЕНАЛЬНЫМИ

unit multik;

interface

Uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls;

Type

TForm1 = class(TForm)

Timer1: TTimer;

procedure FormActivate(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

Private

{ Private declarations }

Public

{ Public declarations }

end;

Var

Form1l: TForm1;

Implementation

($R *.DFM}

Const

FILMFILE = 'film2.bmp'; // фильм — bmp-файл

N_KADR=12; // кадров в фильме (для данного файла)

Var

Film: TBitMap; // фильм — все кадры

WKadr,HKadr: integer; // ширина и высота кадра

CKadr: integer; // номер текущего кадра

RectKadr: TRect; // положение и размер кадра в фильме

Rect1: Trect; // координаты и размер области отображения фильма

procedure TForm1.FormActivate(Sender: TObject);

Begin

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;

// отрисовка кадра procedure DrawKadr;

Begin

// определим положение текущего кадра в фильме

RectKadr:=Bounds(WKadr*CKadr,0,WKadr,HKadr);

// вывод кадра из фильма

Form1.Canvas.CopyRect(Rect1,Film*.Canvas,RectKadr);

// подготовимся к выводу следующего кадра

CKadr:= CKadr+1;

if CKadr = N_KADR then CKadr:=0;:

end;

// обработка сигнала от таймера

procedure TForm1.Timer1Timer(Sender: TObject);

Begin

DrawKadr;

end;

End.

Программа состоит из трех процедур. Процедура TForm1. FormActivate создает объект Film и загружает в него фильм — BMP-файл, в котором находятся кадры фильма. Затем, используя информацию о размере загруженного битового образа, процедура устанавливает значения характеристик кадра: высоту и ширину.

После этого создается объект Kadr (типа TBitMap), предназначенный для хранения текущего кадра. Следует обратить внимание, что после создания объекта Kadr принудительно устанавливаются значения свойств width и Height. Если этого не сделать, то созданный объект будет существовать, однако память для хранения битового образа не будет выделена. В конце своей работы процедура TForml. FormActivate устанавливает номер текущего кадра и запускает таймер.

Основную работу в программе выполняет процедура DrawKadr, которая выделяет из фильма очередной кадр и выводит его в форму. Выделение кадра и его отрисовку путем копирования фрагмента картинки с одной поверхности на другую выполняет метод copyRect (рис. 10.21), которому в качестве параметров передаются координаты области, куда нужно копировать, поверхность и положение области, откуда нужно копировать. Положение фрагмента в фильме, т. е. координата х левого верхнего угла, определяется умножением ширины кадра на номер текущего кадра. Запускает процедуру DrawKadr процедура TForm1.Timer1Timer, обрабатывающая событие OnTiner.

Рис. 10.21. Инструкция Canvas1. CopyRect (Rect1, Canvas2, Rect2) копирует в область Rectl поверхности Canvasl область Rect2 с поверхности Canvas2

 

 


Дата добавления: 2015-09-18 | Просмотры: 478 | Нарушение авторских прав



1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |



При использовании материала ссылка на сайт medlec.org обязательна! (0.003 сек.)