Рисование прямых, ломаных и кривых линий

Понятие холста

Формирование изображений программным способом

В любом визуальном компоненте Delphi, будь то форма или управляющий элемент, существует специальный объект, средствами которого выполняется рисование видимых частей компонента. Он называется холстом и оформлен в виде свойства Canvas. Объект Canvasимеет пять главных свойств:

Pen – объект для рисования линий и границ геометрических фигур;

Brush –объект для заполнения фигур;

Font –объект для вывода текста;

PenPos – объект для хранения текущей позиции рисования;

Pixels[X, Y : Integer]– массив для записи и считывания пикселов холста.

Структура объектов Penи Brushвам знакома по одноименным свойствам компонента Shape, а структура объекта Font– по одноименному свойству формы.

Холст поддерживает такое понятие как текущая позиция рисования. Текущая позиция хранится в свойстве PenPosи используется при рисовании прямых (прямая рисуется от текущей позиции до заданной). Выражение PenPos.Xвозвращает горизонтальную позицию, а PenPos.Y– вертикальную.

Благодаря свойству Pixelsхолст интерпретируется как двумерная матрица пикселов. Элемент, стоящий на пересечении столбца Xи строки Yматрицы Pixels, кодирует цвет пиксела. Координатная система объекта Canvasвыбрана таким образом, что левый верхний пиксел изображения имеет координаты [ 0, 0 ], ось Хнаправлена вправо, а ось Y– вниз.

Шаг 1.Вывод графических примитивов выполняется с помощью методов объекта Canvas.Для их практического изучения вам понадобится новый проект.

Шаг 2.Активизируйте в Инспекторе Объектов страницу Events и отыщите на ней событие OnPaint. Сделайте двойной щелчок мыши в поле зрения. В результате откроется Редактор Кода с заготовкой обработчика события. В этом обработчике вы будете проверять работу изучаемых методов.

MoveTo(X, Y: Integer)– перемещает указатель текущей позиции в заданную точку.

LineTo(X, Y: Integer)– рисует прямую линию от текущей позиции рисования (PenPos.X, PenPos.Y)до заданной (X, Y)и перемещает указатель текущей позиции в точку (X, Y).

Polyline(Points: array of Tpoint)– рисует ломаную линию, соединяя точки массива Points.

Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Integer) –рисует дугу эллипса, вписанного в прямоугольник с координатами (X1, Y1)и ( X2, Y2). Дуга определяется двумя радиусами эллипса, приходящимися через точки (X3, Y3)и (X4, Y4) .Дуга рисуется против часовой стрелки от точки пересечения эллипса с первым радиусом до точки пересечения со вторым радиусом.

Сhord (X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Integer) –рисует хорду эллипса, вписанного в прямоугольник с координатами (X1,Y1)и (X2, Y2)Хорда лежит на прямой, проходящей через точки (X3, Y3)и (X4, Y4).

Шаг 3.С помощью метода Polelineможно легко нарисовать контур треугольника.

ProcedureTform1. FormPaint (Sender : Tobject);