Графика и мультимедиа 339

Имеется еще одно свойство кисти — Bitmap, являющееся указателем на объ-
ект типа TBitmap и определяющее нестандартное заполнение заданным шабло-
ном. Шаблон задается битовой матрицей размером 8 на 8. Если для кисти задан
шаблон Bitmap, то заполнение производится именно этим шаблоном, независимо
от значения свойства Style.

Шаблон Bitmap может создаваться в процессе выполнения приложения или,
например, загружаться из файла, как в приведенном ниже примере, в котором фон
формы заполняется загруженным шаблоном:

Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;

try

{

BrushBmp->LoadFromFile("MyBitmap.bmp") ;

Forml->Canvas->Brush->Bitmap = BrushBmp;

Forml->Canvas->FillRect(Rect(0,0,Forml->Width,Forml->Height)
}

finally
(

Forml->Canvas->Brush->Bitmap = NULL;

delete BrushBmp;

>

В этом примере создается объект BrushBmp типа TBitmap и в него загружает-
ся битовая матрица из фала с именем MyBitmap.bmp. Затем свойству Forml->Can-
vas->Brush->Bitmap присваивается указатель на этот объект. После этого загру-
женный шаблон можно использовать для заполнения фигур на канве формы. Ме-
тод FillRect рисует на канве заполненный шаблоном прямоугольник, занимаю-
щий всю площадь формы. Если подобный код вставить в обработчик события фор-
мы OnResize, то и при изменении пользователем размеров формы ее поверхность
будет вся заполнена шаблоном. После этого (а также в случае генерации каких-то
исключений) Bitmap присваивается значение NULL, после чего заполнение опять
начинает определяться свойством Style. Затем объект BrushBmp уничтожается,
чтобы освободить занимаемую им память.

В приведенном примере использован метод канвы FillRect, объявленный как

void _fastcall FillRect(const Windows::TRect SRect);

Он заполняет заданным стилем или шаблоном прямоугольную область, задан-
ную параметром Rect. Этот параметр имеет тип TRect. Для его задания проще все-
го использовать функцию Rect(Xl,Yl,X2,Y2), возвращающую структуру Rect с
координатами углов, заданных параметрами (XI, Y1) и (Х2, Y2).

Функцию FillRect удобно, в частности, использовать для стирания изображе-
ния. Например, оператор

Imagel->Canvas->FillRect(Rect(0,0,Imagel->Width,Imagel->Height));

очищает всю площадь канвы компонента Imagel.