Графические возможности Delphi: Холст, карандаш, кисть

Холст

Как было сказано ранее, поверхности, на которую программа может выводить графику, соответствует свойство Canvas. В свою очередь, свойство canvas — это объект типа TCanvas. Методы этого типа обеспечивают вывод графических примитивов (точек, линий, окружностей, прямоугольников и т. д.), а свойства позволяют задать характеристики выводимых графических примитивов: цвет, толщину и стиль линий; цвет и вид заполнения областей; характеристики шрифта при выводе текстовой информации.

Методы вывода графических примитивов рассматривают свойство canvas как некоторый абстрактный холст, на котором они могут рисовать (canvas переводится как "поверхность", "холст для рисования"). Холст состоит из отдельных точек — пикселов. Положение пиксела характеризуется его горизонтальной (X) и вертикальной (Y) координатами. Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо (рис. 10.1). Значения координат правой нижней точки холста зависят от размера холста.

 

Размер холста можно получить, обратившись к свойствам Height и width области иллюстрации (image) ИЛИ К свойствам формы: ClientHeight И ClientWidth. 

 

Художник в своей работе использует карандаши и кисти. Методы, обеспечивающие вычерчивание на поверхности холста графических примитивов,тоже используют карандаш и кисть. Карандаш применяется для вычерчивания линий и контуров, а кисть — для закрашивания областей, ограниченных контурами.

Карандашу и кисти, используемым для вывода графики на холсте, соответствуют свойства Реп (карандаш) и Brush (кисть), которые представляют собой объекты типа треп и TBrush, соответственно. Значения свойств этих объектов определяют вид выводимых графических элементов.

 

 

Художник в своей работе использует карандаши и кисти. Методы, обеспе-
чивающие вычерчивание на поверхности холста графических примитивов,
тоже используют карандаш и кисть. Карандаш применяется для вычерчива-
ния линий и контуров, а кисть — для закрашивания областей, ограничен-
ных контурами.
Карандашу и кисти, используемым для вывода графики на холсте, соответ-
ствуют свойства Реп (карандаш) и Brush (кисть), которые представляют со-
бой объекты типа треп и TBrush, соответственно. Значения свойств этих
объектов определяют вид выводимых графических элементов.

Карандаш 

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

Вид линии, которую оставляет карандаш на поверхности холста, определяют свойства объекта треп, которые перечислены s табл.10.1:

Свойство color задает цвет линии, вычерчиваемой карандашом. В табл. 10.2 перечислены именованные константы (тип TColor), которые можно использовать в качестве значения свойства color.

Таблица 10.2. Значение свойства Color определяет цвет линии

Свойство width задает толщину линии (в пикселах). Например, инструкция Canvas. Pen. width: =2 устанавливает толщину линии в 2 пиксела. Свойство style определяет вид (стиль) линии, которая может быть непрерывной или прерывистой, состоящей из штрихов различной длины.

В табл. 10.3 перечислены именованные константы, позволяющие задать стиль линии. Толщина пунктирной линии не может быть больше 1. Если значение свойства Pen.width больше единицы, то пунктирная линия будет выведена как сплошная.

Таблица 10.3. Значение свойства Реn. туре определяет вид линии

Свойство Mode определяет, как будет формироваться цвет точек линии в зависимости от цвета точек холста, через которые эта линия прочерчивается. По умолчанию вся линия вычерчивается цветом, определяемым значением свойства Реп. Color.

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

В табл. 10.4 перечислены некоторые константы, которые можно использовать в качестве значения свойства Pen.Mode.

Таблица 10.4. Значение свойства Реп. Mode влияет на цвет линии


Кисть

Кисть (canvas. Brush) используется методами, обеспечивающими вычерчивание замкнутых областей, например геометрических фигур, для заливки(закрашивания) этих областей. Кисть, как объект, обладает двумя свойствами, перечисленными в табл. 10.5. 

Таблица 10.5. Свойства объекта Tbrush (кисть)

Область внутри контура может быть закрашена или заштрихована. В первом
случае область полностью перекрывает фон, а во втором — сквозь неза-
штрихованные участки области будет виден фон.

Область внутри контура может быть закрашена или заштрихована. В первомслучае область полностью перекрывает фон, а во втором — сквозь не заштрихованные участки области будет виден фон.

В качестве значения свойства color можно использовать любую из констант типа TColor (см. список констант для свойства Pen. Color в табл. 10.2). Константы, позволяющие задать стиль заполнения области, приведены в табл. 10.6.

Таблица 10.6. Значения свойства Brush. style определяют тип закрашивания

В качестве примера в листинге 10.1 приведена программа Стили заполнения областей, которая в окно (рис. 10.2) выводит восемь прямоугольников, закрашенных черным цветом с использованием разных стилей.

Листинг 10.1. Стили заполнения областей

 

01.unit brustyle_;
02.interface
03.uses
04.Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
05.Dialogs, ExtCtrls;
06.type
07.TForml = class(TForm)
08.procedure FormPaint(Sender: TObject);
09.private
10.{ Private declarations}
11.public
12.{ Public declarations }
13.end;
14.var
15.Forml: TForm1;
16.implementation
17.{$R *.DFM}
18.// перерисовка формы
19.procedure TForml.FormPaint(Sender: TObject);
20.const
21.bsName: array[1..8of string =('bsSolid','bsClear1,'bsHorizontal','bsVertical','bsFDiagorial','bsBDiagonal',
22.'bsCross','bsDiagCross');
23.var
24.x,y: integer// координаты левого верхнего угла прямоугольника
25.w,h: integer// ширина и высота прямоугольника
26.bs: TBrushStyle;// стиль заполнения области
27.k: integer// номер стиля заполнения
28.i,j: Integer;
29.begin
30.w:=40; h:=40// размер области (прямоугольника!
31.y:=20;
32.for i:=l to 2 do
33.begin
34.x:=10;
35.for J:-l to 4 do
36.k:=j + (i-l)M; // номер сгиля заполнения
37.case of
38.1: bs:= bsSolid;
39.2: bs:= bsClear;
40.3: bs:= bsHorizontal;
41.4: bs:= bsVertical;
42.5: bs:= bsFDiagonal;
43.6: bs:= bsBDiagonal;
44.7: bs:= bsCross;
45.8: bs:= bsDiagCross;
46.end;
47.// вывод прямоугольника
48.Canvas.Brush.Color := clGreen; // цвет закрашивания — зеленый
49.Canvas.Brush.Style := bs; // стиль закрашивания
50.Canvas.Rectangle(x,y,x+w,y+h);
51.// вывод названия стиля
52.Canvas.Brush.Style := bsClear;
53.Canvas.TextOut(x, y-15, bsName[k]); // вывод названия стиля
54.x := x+w+30;
55.end;
56.у := y+h+30;
57.end;
58.end;
59.end.
dle

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