Битовые образы
Для формирования сложных изображений используют битовые образы. Битовый образ — это, как правило, небольшая картинка, которая находится в памяти компьютера. Сформировать битовый образ можно путем загрузки из bmp-файла или из ресурса, а также путем копирования фрагмента из другого битового образа, в том числе и с поверхности формы. Картинку битового образа (иногда говорят просто "битовый образ") можно подготовить при помощи графического редактора или, если предполагается, что битовый образ будет загружен из ресурса программы, — при помощи редактора ресурсов (например, Borland Resource Workshop). В последнем случае надо создать файл ресурсов и поместить в него битовый образ. Файл ресурсов можно создать и при помощи утилиты Image Editor.
В программе битовый образ — это объект типа TBitmap. Некоторые свойства объекта TBitmap приведены в табл. 23.6. Загрузку картинки из файла обеспечивает метод LoadFromFile, которому в качестве параметра передается имя bmp-файла. Например, следующий фрагмент кода обеспечивает создание и загрузку битового образа из файла.
Graphics: :TBitmap *Plane = new Graphics: :TBititiap() ;
Plane->LoadFromFile("plane.bmp");
В результате выполнения приведенного выше фрагмента, битовый образ Plane представляет собой изображение самолета (предполагается, что в файле plane.bmp находится изображение самолета).
Таблица 3.6. Свойства объекта TBitmap
Свойство | Описание |
Height, Width | Размер (ширина, высота) битового образа. Значения свойств соответствуют размеру загруженной из файла (метод LoadFromFile) или ресурса (метод LoadFromResourcelD или LoadFromResourceName) картинки |
Empty | Признак того, что картинка в битовый образ не загружена (true) |
Transparent | Устанавливает (true) режим использования "прозрачного" цвета. При выводе битового образа методом Draw элементы картинки, цвет которых совпадает с цветом TransparentColor, не выводятся. По умолчанию значение TransparentColor определяет цвет левого нижнего пиксела |
TransparentColor | Задает прозрачный цвет. Элементы картинки, окрашенные этим цветом, методом Draw не выводятся |
Canvas | Поверхность битового образа, на которой можно рисовать точно так же, как на поверхности формы или компонента image |
После того как битовый образ сформирован (загружен из файла или из ресурса), его можно вывести, например, на поверхность формы или компонента image. Сделать это можно, применив метод Draw к свойству Canvas. В качестве параметров методу Draw надо передать координаты точки, от которой будет выведен битовый образ. Например, оператор
Canvas->Draw(10,20,Plane);
выводит на поверхность формы битовый образ plane — изображение самолета. Если перед применением метода Draw свойству Transparent битового образа присвоить значение true, то фрагменты рисунка, цвет которых совпадает с цветом левой нижней точки рисунка, не будут выведены. Такой прием используется для создания эффекта прозрачного фона. "Прозрачный" цвет можно задать и принудительно, присвоив соответствующее значение свойству TransparentColor.
Следующая программа демонстрирует работу с битовыми образами. После запуска программы в ее окне появляется изображение неба и двух самолетов (рис. 23.4). И небо, и самолеты — это битовые образы, загруженные из файлов во время работы программы. Загрузку и вывод битовых образов на поверхность формы выполняет функция обработки события onPaint, текст которой приведен в листинге 3.3. Белое поле вокруг левого самолета показывает истинный размер битового образа Plane. Белого поля вокруг правого самолета нет, т. к. перед тем как вывести битовый образ второй раз, свойству Transparent было присвоено значение true.
Рис. 23.4. Присвоив свойству Transparent значение true, можно скрыть фон
Листинг 3.3. Загрузка и вывод битовых образов на поверхность формы
void __fastcall TForml::FormPaint(TObject *Sender)
{
// битовые образы: небо и самолет
Graphics::TBitmap *sky = new Graphics::TBitmap();
Graphics::TBitmap *plane=new Graphics::TBitmap();
sky->LoadFromFile("sky.bmp");
plane->LoadFromFile("plane.bmp");
Canvas->Draw(0,0,sky); // фон - небо
Canvas->Draw(20,20,plane); // левый самолет
plane->Transparent = true;
/* теперь элементы рисунка, цвет которых совпадает
с цветом левой нижней точки битового образа,
не отображаются */
Canvas->Draw(120,20,plane); // правый самолет
// уничтожить объекты
sky->Graphics::~TBitmap();
plane->Graphics::~TBitmap();
}
Небольшие по размеру битовые образы часто используют при формировании фоновых рисунков по принципу кафельной плитки (рис. 3.13).
Рис. 3.13. Фоновый рисунок и битовый образ-плитка, из которого он составлен
Следующая программа показывает, как можно получить фоновый рисунок путем многократного вывода битового образа на поверхность формы. Формирование фонового рисунка, многократный вывод битового образа на поверхность формы выполняет функция Background. Ее объявление (прототип), а также объявление битового образа (объекта типа TBitmap) надо поместить в секцию private объявления класса формы (листинг 3.4), которая находится в заголовочном файле. Создание битового образа и загрузку картинки из файла выполняет функция обработки события onCreate. Функция обработки события OnPaint путем вызова функции Background обеспечивает вывод фонового рисунка на поверхность формы (листинг 3.5).
Листинг 3.4. Объявление битового образа и функции Background
class TForml : public TForm
{
_published:
void__fasteal1 FormCreate(TObject *Sender);
void__fastcall FormPaint(TObject *Sender);
void__fastcall FormResize(TObject *Sender);
private:
Graphics::TBitmap *back;// элемент фонового
// рисунка
void __fastcall Background(); // формирует
// фоновый рисунок на
// поверхности формы public:
_fastcall TForml(TComponent* Owner);
};
Листинг 3.5. Функции, обеспечивающие формирование и вывод фонового рисунка
// обработка события OnCreate
void __fastcall TForml::FormCreate(TObject *Sender)
{
back=new Graphics::TBitmap(); // создать объект
// — битовый образ
// загрузить картинку
try // в процессе загрузки картинки возможны ошибки
{
Forml->back->LoadFromFile("Legal.bmp");
}
catch (EFOpenError &e)
{
return;
}
}
// формирует фоновый рисунок
void __fastcall TForml::Background()
{
int x=0,y=0; // координаты левого верхнего угла битового образа
if ( back->Empty) // битовый образ не был загружен
return;
do
{
do
{
Canvas->Draw(x,y,back);
x += back->Width;
}
while (x<ClientWidth);
x = 0;
у4= back->Height;
}
while (y < ClientHeight);
}
// обработка события OnPaint
void __fastcall TForml::FormPaint(TObject *Sender)
{
Background(); // обновить фоновый рисунок
}
- Московский государственный университет
- Компоненты
- Событие и функция обработки события
- Редактор кода
- Система подсказок
- Навигатор классов
- Шаблоны кода
- Справочная система
- Сохранение проекта
- Компиляция
- Предупреждения и подсказки
- Компоновка
- Запуск программы
- Ошибки времени выполнения
- Внесение изменений
- Настройка приложения
- Название программы
- Значок приложения
- Перенос приложения на другой компьютер
- Структура простого проекта
- 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. Задание на выполнение работы
- Литература