top of page

                        Средства рисования в Lazarus

При разработке проекта, в котором можно рисовать, в распоряжении программиста находится полотно (холст) свойство Canvas, карандаш свойствоPen, и кисть свойствоBrush.

Свойством Canvas обладают следующие компоненты:

• форма (класс Tform);

• таблица (класс TSringGrid);

• растровая картинка (класс Timage);

• принтер (класс TPrinter).

При рисовании компонента, обладающего свойством Canvas, сам компонент

рассматривается как прямоугольная сетка, состоящая из отдельных точек, называемых пикселями. Положение пикселя характеризуется его вертикальной (X) и горизонтальной(Y) координатами. Левый верхний пиксель имеет координаты(0,0). Вертикальная координата возрастает сверху вниз, горизонтальная

слева направо. Общее количество пикселей по вертикали определяется свойством Height, а по горизонтали свойствомWeight. Каждый пиксель может

иметь свой цвет. Для доступа к любой точке полотна используется свойство Pixels[X,Y]:TColor. Это свойство определяет цвет пикселя с координатами

X(integer), Y(integer).

Изменить цвета любого пикселя полотна можно с помощью следующего оператора присваивания:

Компонент . Canvas . P i x e l s [X,Y]:= Color ;

где Color переменная или константа типаTcolor.

Определены следующие константы цветов (табл. 10.1).

Цвет любого пикселя можно получить с помощью следующего оператора присваивания:

Color :=Компонент . Canvas . P i x e l s [X,Y ] ;

где Color переменная типаTcolor.

Класс цвета точки Tcolor определяется как длинное целоеlongint. Пере-

менные этого типа занимают в памяти четыре байта. Четыре байта переменных этого типа содержат информацию о долях синего (B), зелёного (G) и красного

(R) цветов и устроены следующим образом: $00BBGGRR.

Для рисования используются методы класса TСanvas, позволяющие изобра-

зить фигуру (линию, прямоугольник и т. д.) или вывести текст в графическом режиме, и три класса, определяющие инструменты вывода фигур и текстов:

•TFont (шрифты);

•TPen (карандаш, перо);

•TBrush (кисть).

Класс TFONT. Можно выделить следующие свойства соответствующего объекта Canvas.TFont:

•Name (типstring) имя используемого шрифта.

•Size (типinteger) размер шрифта в пунктах (points). Пункт это единица измерения шрифта, равная0,353 мм или1/72 дюйма.

•Style стиль начертания символов, который может быть обычным, полужирным (fsBold), курсивным (fsItalic), подчёркнутым (fsUnderline) и перечёркнутым (fsStrikeOut). В программе можно комбинировать необ-

ходимые стили, например, чтобы установить стиль ¾полужирный курсив¿ необходимо написать следующий оператор:

Объект . Canvas . Font . Style :=[ f s I t a l i c , fsBold ]

•Color (типTcolor) цвет символов.

•Charset (тип0..255) набор символов шрифта. Каждый вид шрифта,

определяемый его именем, поддерживает один или более наборов символов. В табл. 10.2 приведены некоторые значенияCharset.

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

Canvas.TPen:

•Color (типTcolor) определяет тип линии;

•Width (типInteger) задаёт толщину линии в пикселях;

•Style даёт возможность выбрать вид линии. Это свойство может прини-

мать значение, указанное в таблице 10.3.

Mode определяет, каким образом взаимодействуют цвета пера и полотна.

Выбор значения этого свойства позволяет получать различные эффекты. Возможные значения Mode приведены в табл.10.4. По умолчанию вся линия вычерчивается цветом, определяемым значениемPen.Color, но можно

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

Procedure PolyLine ( const Points array of TPoint ) ;

Метод PolyLine рисует ломаную линию, координаты вершин которой определяются массивомPoints.

Рассмотрим работу процедуры на примере. Расположим на форме кнопки Рисовать и Выход и запишем следующие операторы процедур обработки события:

procedure TForm1 . Button1Click ( Sender : TObject ) ;

var

temp : array

[ 1 . . 2 5 ] of TPoint ;

i

:

byte ;

 

j :

 

integer ;

 

begin

 

 

j :=1;

 

for

i :=1 to 25

do

begin

//вычисление координат вершин ломаной линии temp [ i ] . x:=25+( i −1) 10;

temp [ i ] . y:=150− j ( i−1) 5; j :=−j ;

end ;

Form1 . Canvas . P o l y l i n e ( temp ) ; end ;

procedure TForm1 . Button2Click ( Sender : TObject ) ; begin

Form1 . Close ; end ;

После запуска программы и щелчка по кнопке Рисовать окно формы будет выглядеть, как на рисунке 10.1.

Procedure E l l i p s e (X1 , Y1 , X2 , Y2 : Integer ) ;

Метод Ellipse вычерчивает на холсте эллипс или окружность.X1, Y1, X2, Y2 это координаты прямоугольника, внутри которого вычерчивается эллипс.

Если прямоугольник является квадратом, то вычерчивается окружность.

Procedure Arc (X1 , Y1 , X2 , Y2 , X3 , Y3 , X4 , Y4 : Integer ) ;

Метод Arc вычерчивает дугу эллипса.X1, Y1, X2, Y2 это координаты, определяющие эллипс, частью которого является дуга;X3, Y3 координаты, определяющие начальную точку дуги;X4, Y4 координаты, определяющие ко-

нечную точку дуги. Дуга рисуется против часовой стрелки.

Procedure Rectangle (X1 , Y1 , X2 , Y2 : Integer ) ;

Метод Rectangle рисует прямоугольник.X1, Y1, X2, Y2 координаты верх-

него левого и нижнего правого углов прямоугольника.

Procedure RoundRect (X1 , Y1 , X2 , Y2 , X3 , Y3 : Integer ) ;

Это метод вычерчивания прямоугольника со скруглёнными углами. X1, Y1, X2, Y2 координаты верхнего левого и нижнего правого углов прямоугольника, аX3, Y3 размер эллипса, одна четверть которого используется для вычерчи-

вания скругленного угла.

Procedure PolyGon ( const Points array of TPoint ) ;

Метод PolyGon рисует замкнутую фигуру (многоугольник) по множеству угловых точек, заданному массивомPoints. При этом первая точка соединяется прямой линией с последней. Этим методPolyGon отличается от методаPoliline,

который не замыкает конечные точки. Рисование осуществляется текущим пером Pen, а внутренняя область фигуры закрашивается текущей кистьюBrush.

Procedure Pie (X1 , Y1 , X2 , Y2 , X3 , Y3 , X4 , Y4 : Integer ) ; Метод Pie рисует замкнутую фигуру сектор окружности или эллипса

спомощью текущих параметров пера Pen, внутренняя область закрашивается текущей кистью Brush. Точки(X1,Y1) и(X2,Y2) задают прямоугольник, опи-

сывающий эллипс. Начальная точка дуги определяется пересечением эллипса

спрямой, проходящей через его его центр и точку (X3,Y3). Конечная точка ду-

ги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X4,Y4). Дуга рисуется против часовой стрелки от начальной до ко-

нечной точки. Рисуются прямые, ограничивающие сегмент и проходящие через центр эллипса и точки (X3,Y3) и(X4,Y4).

bottom of page