Использование
методов объекта 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, только первая и последняя точки ломаной линии соединяются.