Использование методов объекта Canvas

В этой части главы мы рассмотрим методы объекта Canvas, которые позволяют рисовать простые графические объекты.

Рисование линий и ломаных

Объект канвы позволяет чертить прямые линии и ломаные линии.

Прямая линия — это точки отрезка прямой, проходящей через две заданные точки.

Ломаная линия — это несколько прямых линий, которые соединены между собой конечными точками.

Для рисования прямой линии на канве вы можете использовать метод LineTo. Данный метод чертит линию из текущей позиции пера в точку, указанную вами, и делает конечную точку линии текущей позицией пера.

Приведенный ниже пример (листинг 13.9) чертит диагональные линии формы каждый раз, когда форма перерисовывается (обновляется). Для этого мы записываем код в обработчик события формы OnPaint.

Листинг 13.9. Пример рисования прямых линий

procedure TForm1.FormPaint(Sender: TObject); 
begin
with Canvas do begin
MoveTo(0, 0);
LineTo(ClientWidth, ClientHeight);
MoveTo(0, ClientHeight);
LineTo(ClientWidth, 0), end; end;

Результат выполнения примера изображен на рис. 13.3.

13-07-1.jpg

Рис. 13.3. Форма с диагональными линиями

Для рисования ломаных линий можно воспользоваться специальным методом Polyline.

Параметрами данного метода являются элементы массива Points. Приведем пример рисования ломаной линии:

Form1.Canvas.Polyline([Point(0, 0), Point(12,14), Point(50,30), Point (130, 120), Point(210,132)]);

Данный пример чертит ломаную линию, состоящую из прямых линий (рис. 13.4).

13-07-2.jpg

Рис. 13.4. Ломаная линия

Рисование линий с помощью метода Polyline аналогично рисованию нескольких линий с помощью методов MoveTo и LinеТо. Ниже приведен пример (листинг 13.10), который строит такую же ломаную, как и предыдущий пример.

Листинг 13.10.Построение ломанной линии

with Canvas do 
begin
MoveTo(0, 0);
LineTo(12, 14);
LineTo(50, 30); LineTo(130, 120);
LineTo(2l0,132); end;

Примечание

Если вы рисуете ломаные линии, то используйте метод Polyline, т. к. он выполняется значительно быстрее, чем вызов нескольких методов LineTo.

Рисование геометрических фигур

Для рисования эллипсов, окружностей или прямоугольников вы можете использовать методы Ellipse или Rectangle соответственно.

Приведем пример (листинг 13.11), в котором рисуется прямоугольник, занимающий левую верхнюю четвертую часть формы, а затем в этот прямоугольник вписывается эллипс (рис. 13.5).

Листинг 13.11.Прямоугольник со вписанным эллипсом

procedure TForm1.FormPaint(Sender: TObject); 
begin
Canvas.Rectangle(0, 0, ClientWidth div 2, ClientHeight div 2);
Canvas.Ellipse(0, 0, ClientWidth div 2, ClientHeight div 2); end;

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

Первые четыре параметра определяют координаты главной диагонали прямоугольника, остальные два показывают, как скругляются его углы.

13-07-3.jpg

Рис. 13.5. Эллипс, вписанный в прямоугольник

Нижеприведенный пример (листинг 13.12) рисует прямоугольник со скругленными углами, которые скруглены по шаблону окружности, с диаметром 10 точек (рис. 13.6).

Листинг 13.12.Прямоугольник со скругленными углами

procedure TForm1.FormPaint{Sender: TObject); 
begin
Canvas.RoundRect(0, 0, ClientWidth div 2, ClientHeight div 2, 10, 10); end;
13-07-4.jpg

Рис. 13.6. Прямоугольник со скругленными углами

Для рисования многоугольников с любым количеством углов и сторон вы можете использовать метод Polygon.

Метод Polygon содержит в качестве параметров массив точек Points, которые определяют координаты вершин многоугольника. После рисований текущим пером линий многоугольника метод Polygon закрашивает текущим цветим кисти область внутри многоугольника.

Примечание
Данный метод аналогичен методу Polyline, только первая и последняя точки ломаной линии соединяются.

Hosted by uCoz