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



Листинг 3 8



Листинг 3.8

. Загрузка битовых образов из ресурса  // подключить файл ресурсов, в котором находятся // необходимые программе битовые образы #pragma resource "images.res" void__fastcall TForml::FormCreate(TObject *Sender) { // загрузить фоновый рисунок из ресурса back = new Graphics::TBitmap(); back->LoadFromResourceName((int)HInstance,"FACTORY"); // установить размер клиентской (рабочей) области формы //в соответствии с размером фонового рисунка ClientWidth = back->Width; ClientHeight = back->Height; // загрузить изображение объекта из ресурса sprite = new Graphics::TBitmap(); sprite->LoadFromResourceName((int)HInstance,"APLANE"); sprite->Transparent = true; // исходное положение самолета x=-20; // чтобы самолет "вылетал" из-за левой границы окна у=20; }
Преимущества загрузки картинок из ресурса программы очевидны: при распространении программы не надо заботиться о том, чтобы во время работы программы были доступны файлы иллюстраций, т. к. все необходимые программе картинки находятся в исполняемом файле.

Теперь рассмотрим, как можно реализовать в диалоговом окне программы вывод баннера, представляющего собой последовательность сменяющих друг друга картинок (кадров). Кадры баннера обычно находятся в одном файле или в одном ресурсе. В начале работы программы они загружаются в буфер (объект типа TBitmap). Вывод кадров баннера обычно выполняет функция обработки сигнала от таймера (события onTimer), которая выделяет очередной кадр и выводит его на поверхность формы.

Вывести кадр баннера (фрагмент битового образа) на поверхность формы можно при помощи метода copyRect, который копирует прямоугольную область одной графической поверхности на другую.

Инструкция применения метода CopyRect в общем виде выглядит так:
Canvasl->CopyRect(Область1, Canvas2, Область2)
где:

  •  Canvas1 — поверхность, на которую выполняется копирование;
  •  Canvas2 — поверхность, с которой выполняется копирование;
  •  Область1 — структура типа TRect, которая задает положение и размер области, куда выполняется копирование (приемник);
  •  Область2 — структура типа TRect, которая задает положение и размер области, откуда выполняется копирование (источник).


Определить прямоугольную область, заполнить поля структуры TRect можно при помощи функции Rect или Bounds. Функции Rect надо передать в качестве параметров координаты левого верхнего и правого нижнего углов области, функции Bounds — координаты левого верхнего угла и размер области. Например, если надо определить прямоугольную область, то это можно сделать так: ret = Rect(x1,y1,x2,y2) или так: ret = Bounds(x1,y1,w,h)

где x1, y1 — координаты левого верхнего угла области; х2, у2 — координаты правого нижнего угла области; w и h — ширина и высота области.

Следующая программа (ее текст приведен в листинге 3.9) выводит в диалоговое окно баннер — рекламное сообщение. На Рисунок 3.23 приведены кадры этого баннера (содержимое файла baner.bmp), а на Рисунок 3.24 — диалоговое окно. Форма программы содержит один-единственный компонент — таймер.









Содержание  Назад  Вперед