Подключение файла ресурсов
Для того чтобы ресурсы, находящиеся в файле ресурсов, были доступны программе, в текст программы надо поместить инструкцию (директиву), которая сообщит компилятору, что в исполняемый файл следует добавить содержимое файла ресурсов. В общем виде эта директива выглядит следующим образом:
#pragma resource ФайлРесурсов
где ФайлРесурсов — имя файла ресурсов.
Например, для программы flight_l директива, обеспечивающая включение содержимого файла ресурсов в выполняемый файл, выглядит так:
#pragma resource "images.res"
Загрузить битовый образ из ресурса можно при помощи метода LoadFromResourceName, который имеет два параметра: идентификатор программы и имя ресурса. В качестве идентификатора программы используется глобальная переменная Hinstance. Имя ресурса должно быть представлено в виде строковой константы. Например, в программе flight_1 инструкция загрузки фона из ресурса выглядит так:
back->LoadFromResourceName( (int)Hinstance,"FACTORY");
В качестве примера в листинге 23.8 приведен фрагмент программы flight_1 — функция TForm1::FormCreate, которая обеспечивает загрузку битовых образов из ресурсов.
Листинг 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) выводит в диалоговое окно баннер — рекламное сообщение. На рис. 23.15 приведены кадры этого баннера (содержимое файла baner.bmp), а на рис. 23.16 — диалоговое окно. Форма программы содержит один-единственный компонент — таймер.
Рис. 23.15. Кадры баннера
Рис. 23.16. Воспроизведение баннера в окне программы
Листинг 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;// область воспроизведения баннера
- Московский государственный университет
- Компоненты
- Событие и функция обработки события
- Редактор кода
- Система подсказок
- Навигатор классов
- Шаблоны кода
- Справочная система
- Сохранение проекта
- Компиляция
- Предупреждения и подсказки
- Компоновка
- Запуск программы
- Ошибки времени выполнения
- Внесение изменений
- Настройка приложения
- Название программы
- Значок приложения
- Перенос приложения на другой компьютер
- Структура простого проекта
- 2. Задание на выполнение работы
- 1. Электроэнергия.
- 2. Игра «угадай число».
- 3. Гороскоп
- 4. Межгород
- 6. Алфавит
- 7. Палиндром
- 8. Метеослужба
- 9. Статистика
- 10. Кафе.
- Лабораторная работа №22 Графика.
- Карандаш и кисть
- Графические примитивы
- Ломаная линия
- Прямоугольник
- Многоугольник
- Окружность и эллипс
- Лабораторная работа №23 Иллюстрации
- Битовые образы
- Мультипликация
- Метод базовой точки
- Использование битовых образов
- Загрузка битового образа из ресурса программы
- Создание файла ресурсов
- Подключение файла ресурсов
- Int w, h; // размер кадра
- Int с; // номер воспроизводимого кадра
- Лабораторная работа №25
- 1. База данных и субд
- Локальные и удаленные базы данных
- Структура базы данных
- Псевдоним
- Компоненты доступа и манипулирования данными
- Создание базы данных
- Доступ к базе данных Доступ к базе данных обеспечивают компонентыDatabase, Table, Query и DataSource.Значки этих компонентов находятся на вкладкахData Accessи bde(рис. 25.8).
- Отображение данных
- Манипулирование данными
- Выбор информации из базы данных
- Перенос программы управления базой данных на другой компьютер
- 2. Задание на выполнение работы
- Литература