C++ Builder - вопросы программирования

       

область воспроизведения баннера int w,



Листинг 3.9.

Баннер (baner.h, baner_.cpp)
// baner.h class TForml : public TForm { published: TTimer *Timerl; void__fastcall FormCreate(TObject *Sender);
void __fastcall TimerITimer(TObject *Sender);
private: Graphics::TBitmap *baner; // баннер TRect kadr; // кадр баннера TRect scr; // область воспроизведения баннера int w, h; // размер кадра 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 (Рисунок 3.25), которому в качестве параметров передаются координаты области, куда нужно копировать, поверхность и положение области, откуда нужно копировать. Положение фрагмента в фильме, т. е. координата х левого верхнего угла, определяется умножением ширины кадра на номер текущего кадра.

Содержание раздела