logo search
Курсовые / Лабораторная работа20-25

Int с; // номер воспроизводимого кадра

public:

_fastcall TForml(TComponent* Owner);

};

// baner_.cpp

#define FBANER "borland.bmp" // баннер

#define NKADR 4 // количество кадров в баннере

void__fastcall TForml::FormCreate(TObject *Sender)

{

baner = new Graphics::TBitmap();

baner->LoadFromFile(FBANER); // загрузить баннер

h = baner->Height;

w = baner->Width / NKADR;

scr = Rect(10,10,10+w,10+h); // положение и размер области

// воспроизведения баннера kadr = Rect(0,0,w,h);

// положение и размер первого кадра

//в баннере

}

// обработка события OnTimer

void__fastcall TForml:rTimerlTimer(TObject *Sender)

{

// вывести кадр баннера

Canvas->CopyRect(scr,baner->Canvas,kadr);

// подготовиться к воспроизведению следующего кадра

if (с < NKADR)

{

// воспроизводимый в данный момент

// кадр — не последний

с++;

kadr.Left += w;

kadr.Right += w;

}

else

{

с = 0;

kadr.Left = 0;

kadr.Right = w;

}

}

Программа состоит из двух функций. Функция TForm1::Form-Create создает объект TBitmap и загружает в него баннер — BMP-файл, в котором находятся кадры баннера. Затем, используя информацию о размере загруженного битового образа, функция устанавливает значения характеристик кадра: высоту ширину. Основную работу в программе выполняет функция обработки события onTimer, которая выделяет из битового образа Baner очередной кадр и выводит его на поверхность формы. Выделение кадра и его отрисовку путем копирования фрагмента картинки с одной поверхности на другую выполняет метод copyRect (рис. 23.17), которому в качестве параметров передаются координаты области, куда нужно копировать, поверхность и положение области, откуда нужно копировать. Положение фрагмента в фильме, т. е. координата х левого верхнего угла, определяется умножением ширины кадра на номер текущего кадра.

Рис. 23.17. Метод CopyRect копирует в область Rect1 поверхности Canvas1 область Rect2 с поверхности Canvas2