Использование
методов объекта 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.3. Форма с диагональными линиями
Для рисования ломаных линий
можно воспользоваться специальным методом Polyline
.
Параметрами данного метода
являются элементы массива Points
. Приведем пример рисования ломаной
линии:
Form1.Canvas.Polyline([Point(0,
0), Point(12,14), Point(50,30), Point (130, 120), Point(210,132)]);
Данный пример чертит ломаную
линию, состоящую из прямых линий (рис. 13.4).
Рис.
13.4. Ломаная линия
Рисование линий с помощью
метода Polyline
аналогично рисованию нескольких линий с помощью
методов MoveTo
и LinеТо
. Ниже приведен пример (листинг
13.10), который строит такую же ломаную, как и предыдущий пример.
Листинг 13.10.Построение
ломанной линии
with Canvas do begin
MoveTo(0, 0);
LineTo(2l0,132); end;
LineTo(12, 14);
LineTo(50, 30); LineTo(130, 120);
Примечание
Если вы рисуете ломаные линии, то используйте метод
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.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.6. Прямоугольник со скругленными углами
Для рисования многоугольников
с любым количеством углов и сторон вы можете использовать метод Polygon
.
Метод Polygon
содержит в качестве параметров массив точек Points
, которые определяют
координаты вершин многоугольника. После рисований текущим пером линий многоугольника
метод Polygon
закрашивает текущим цветим кисти область внутри многоугольника.
Примечание
Данный метод аналогичен методуPolyline
, только первая и последняя точки ломаной линии соединяются.