Мы пока не трогали картинки, поэтому это свойство рассматриваться здесь не будет. Единственное, что можно сделать,— написать небольшой пример, по которому вы сможете вернуться к свойству и разобраться самостоятельно. Код использования свойства Bitmap показан в листинге 12.2. Если же что-то не понятно, то не расстраивайтесь, класс TBitmap— это отдельная тема, которая будет рассмотрена позже.
var
Bitmap: TBitmap; begin
Bitmap := TBitmap.Create; //Создается картинка try
Bitmap.LoadFromFile('MyBitmap.tap'); //Загружается картинка
Form1.Canvas.Brush.Bitmap := Bitmap; //Присваивается в качестве фона
Form1.Canvas.Rectangle(0,0,100/100); // Рисуется квадрат finally
Form1.Canvas.Brush.Bitmap := nil; // Обнуляется фон
Bitmap.Free; // Уничтожается картинка
end;
end;
- color — так же как и у карандаша, у кисти тоже может быть свой цвет.
- Handle — такой же указатель, как и у карандаша, но на кисть.
- style—стиль фона. Здесь могут быть следующие значения: bsSolid, bsciear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross.
Ha рис. 12.5 вы можете увидеть графическое отображение каждого из стилей. Теперь перейдем к практической части работы с кистью и напишем небольшой
пример. Для начала создайте новый проект. Как и в предыдущем примере, создадим обработчик событияOnPaintдля формы, чтобы по этому событию производить рисование. В обработчике напишем содержимое листинга:
procedure TForm1.FormPaint(Sender: TObj ect);
begin
Canvas.Brush.Style:=bsSolid; Canvas.Rectangle(10,10,50,50);
Canvas.Brush.Style:=bsBDiagonal; Canvas.Rectangle(10,110,50,150);
Canvas.Brush.Style:=bsFDiagonal;
Canvas.Rectangle(10,160,50,200);
Canvas.Brush.Style:=bsCross; Canvas.Rectangle(110,10,150,50);
Canvas.Brush.Style:=bsDiagCross; Canvas.Rectangle(110,60,150,100);
Canvas.Brush.Style:=bsHorizontal; Canvas.Rectangle(110,110,150,150);
Canvas.Brush.Style:=bsVertical; Canvas.Rectangle(110,160,150,200);
Canvas.Brush.Style:=bsClear; Canvas.Rectangle(10,60,50,100);
end;
Здесь код разбит на блоки по две строки. В первой строке задается стиль кисти, а во второй рисуется прямоугольник с помощью метода Rectangle (х, у,r, b), где:
- х — левая сторона прямоугольника;
- у — верхняя сторона прямоугольника;
- r — правая сторона прямоугольника;
- b— нижняя сторона прямоугольника.
Чтобы было более ясно, взгляните на рис.
Таким образом, мы рисуем восемь прямоугольников с разными стилями кисти. Если вы запустите сейчас этот пример, то не заметите никакой разницы, все прямоугольники будут одинаковыми. Это потому, что цвет кисти имеет такой же цвет, что и форма. В результате все сливается. Чтобы увидеть разницу, надо изменить цвет фона кисти.
Давайте установим на форму кнопку Изменить цвет и компонент coiorDialog. Для события, связанного с нажатием кнопки, напишем следующий код:
if ColorDialogl.Execute then
Canvas.Brush.Color:=ColorDialogl.Color; FormPaint(nil);
Здесь запускается окно изменения цвета, и если цвет выбран, то присваиваем его КИСТИ
Вот теперь можно запускать программу и смотреть результат. Щелкните по кнопке Изменить цвет и выберите что-нибудь из темных цветов, например, синий. Результат показан на рис.
Любые установленные цвета желательно после рисования восстанавливать в исходное состояние. Когда у вас маленький проект, то легко вычислить, почему во время работы программы отображается не тот цвет, но в большом проекте сделать это будет сложно.
Не устанавливайте цвета в обработчиках событий для каких-либо кнопок или пунктов меню. Все это необходимо делать непосредственно в функции рисования, как в следующем примере:
procedure TForm1. FormPaint (Sender: TObj ect) ;
begin
//Обязательно устанавливаю цвет кисти Canvas.Brush.Color:=ColorDialogl.Color;
//Рисую первый квадрат Canvas.Brush.Style:=bsSolid; Canvas.Rectangle(10,10,50,50);
Хотя мы могли не изменять цвет кисти в данном примере, потому что это уже сделано после вывода окна выбора цвета, мы все же для большей надежности изменяем цвет в функции рисования.