Свойства кисти в Delphi

Мы пока не трогали картинки, поэтому это свойство рассматриваться здесь не будет. Единственное, что можно сделать,— написать небольшой пример, по которому вы сможете вернуться к свойству и разобраться самостоятельно. Код использования свойства 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 вы можете увидеть графическое отображение каждого из стилей. Теперь перейдем к практической части работы с кистью и напишем небольшойСвойства кисти в Delphi

пример. Для начала создайте новый проект. Как и в предыдущем примере, созда­дим обработчик события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— нижняя сторона прямоугольника.

 

Чтобы было более ясно, взгляните на рис.

Свойства кисти в Delphi

Таким образом, мы рисуем восемь прямоугольников с разными стилями кисти. Если вы запустите сейчас этот пример, то не заметите никакой разницы, все прямо­угольники будут одинаковыми. Это потому, что цвет кисти имеет такой же цвет, что и форма. В результате все сливается. Чтобы увидеть разницу, надо изменить цвет фона кисти.

Давайте установим на форму кнопку Изменить цвет и компонент coiorDialog. Для события, связанного с нажатием кнопки, напишем следующий код:

 

if ColorDialogl.Execute then

Canvas.Brush.Color:=ColorDialogl.Color; FormPaint(nil);

 

Здесь запускается окно изменения цвета, и если цвет выбран, то присваиваем его КИСТИ

Canvas.Brush.Color:=ColorDialogl.Color

Вот теперь можно запускать программу и смотреть результат. Щелкните по кнопке Изменить цвет и выберите что-нибудь из темных цветов, например, синий. Результат показан на рис. Свойства кисти в Delphi

ЗАМЕЧАНИЕ. Прямоугольник с невидимой кистью (Style = bsClear) рисуется по­следним, хотя на форме он расположен во второй строке первой колонки. Это связано с тем, что после рисования с невидимой кистью цвет теряется. Попробуйте поставить рисование с невидимой кистью где-нибудь раньше и увидите, что первоначально у прямоугольника с прозрачной кистью фон будет того цвета, что был выбран, а после будет белого цвета.

СОВЕТ. Если программу свернуть и потом развернуть, то цвет кисти опять же будет белого цвета. Это связано с тем, что, когда мы нарисовали последний квадрат (кото­рый был с прозрачным фоном), цвет кисти все же изменился на белый. Мы этого не увидели, потому что последний квадрат был с прозрачным фоном. При следующей прорисовке цвет уже изначально белый. Чтобы избавиться от этого эффекта, после каждого рисования фигур прозрачной кистью надо устанавливать цвет. Для большей надежности желательно устанавливать цвет непосредственно перед рисованием.

Любые установленные цвета желательно после рисования восстанавливать в ис­ходное состояние. Когда у вас маленький проект, то легко вычислить, почему во время работы программы отображается не тот цвет, но в большом проекте сделать это будет сложно.

 

Не устанавливайте цвета в обработчиках событий для каких-либо кнопок или пунктов меню. Все это необходимо делать непосредственно в функции рисования, как в следующем примере:

 

procedure TForm1. FormPaint (Sender: TObj ect) ;

begin

//Обязательно устанавливаю цвет кисти Canvas.Brush.Color:=ColorDialogl.Color;

//Рисую первый квадрат Canvas.Brush.Style:=bsSolid; Canvas.Rectangle(10,10,50,50);

 

Хотя мы могли не изменять цвет кисти в данном примере, потому что это уже сделано после вывода окна выбора цвета, мы все же для большей надежности из­меняем цвет в функции рисования.

dle

Помоги проекту! Расскажи друзьям об этом сайте: