Иллюстрированный самоучитель по C++ Builder

Битовые образы

Следующая программа показывает, как можно получить фоновый рисунок путем многократного вывода битового образа на поверхность формы. Формирование фонового рисунка, многократный вывод битового образа на поверхность формы выполняет функция 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(); // обновить фоновый рисунок
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.