Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / DELPHI / ВМИПЛаб4.doc
Скачиваний:
20
Добавлен:
16.04.2013
Размер:
1.46 Mб
Скачать

Описание методов канвы

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

Метод Arc рисует дугу окружности или эллипса с помощью текущих параметров пера Pen. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X3, Y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X4, Y4). Дуга рисуется против часовой стрелки от начальной до конечной точки.

В Windows 95 суммы X1 + X2, Y1 + Y2 и X1 + X2 + Y1 + Y2 не должны превышать 32768.

В Windows NT направление рисования можно изменить на направление по часовой стрелке вызовом функции SetArcDirection.

p

Рис.3. Линии, фигуры и текст, вычерченные методами канвы

rocedure Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

Метод Chord рисует замкнутую фигуру: дугу окружности или эллипса, замкнутую хордой, с помощью текущих параметров пера Pen. Фигура заполняется текущим значением Brush. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X3, Y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X4, Y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Хорда соединяет точки (X3, Y3) и (X4, Y4) .

В Windows 95 суммы X1 + X2, Y1 + Y2 и X1 + X2 + Y1 + Y2 не должны превышать 32768.

В Windows NT направление рисования дуги можно изменить на направление по часовой стрелке вызовом функции SetArcDirection.

procedure Ellipse(X1, Y1, X2, Y2: Integer);

Метод Ellipse рисует окружность или эллипс с помощью текущих параметров пера Pen. Фигура заполняется текущим значением Brush. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс.

В Windows 95 суммы X1 + X2, Y1 + Y2 и X1 + X2 + Y1 + Y2 не должны превышать 32768.

procedure Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint);

Метод Pie рисует замкнутую фигуру - сектор окружности или эллипса, с помощью текущих параметров пера Pen. Фигура заполняется текущим значением Brush. Точки (X1, Y1) и (X2, Y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X3, Y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (X4, Y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Рисуются прямые, ограничивающие сегмент и проходящие через центр эллипса и точки (X3, Y3) и (X4, Y4).

В Windows 95 суммы X1 + X2, Y1 + Y2 и X1 + X2 + Y1 + Y2 не должны превышать 32768.

В Windows NT направление рисования дуги можно изменить на направление по часовой стрелке вызовом функции SetArcDirection.

procedure Polygon(Points: array of TPoint);

Метод Polygon рисует на канве замкнутую фигуру (полигон, многоугольник) по множеству угловых точек, заданному массивом Points. Первая из указанных точек соединяется прямой с последней. Этим метод Polygon отличается от метода Polyline, который не замыкает конечные точки. Рисование проводится текущим пером Pen. Внутренняя область фигуры закрашивается текущей кистью Brush.

Метод позволяет рисовать фигуру по точкам, хранящимся в массиве элементов типа TPoint. Если желательно использовать для рисования только часть точек массива, это можно сделать с помощью функции Slice. Если надо нарисовать полигон всего по нескольким точкам, то передавать их в метод Polygon удобно с помощью стандартнойфункции Point.

function Point(AX, AY: Integer): TPoint;

Функция Point cоздает структуру TPoint из пары координат, являющихся ее параметрами. Функцию удобно использовать для задания аргументов многих функций, имеющих параметры типа TPoint.

type TPoint = record

X: Longint;

Y: Longint;

end;

Тип TPoint используется для многих свойств и обычно определяет экранные координаты левого верхнего угла прямоугольной области. X определяет горизонтальную координату, а Y - вертикальную.

procedure Polyline(Points: array of TPoint);

Метод Polyline рисует на канве кусочно-линейную кривую по множеству точек, заданному массивом Points. Отличие метод Polyline от метода Polygon заключается в том, что метод Polygon замыкает конечные точки, а метод Polyline - нет. Рисование проводится текущим пером Pen. Метод не изменяет текущей позиции PenPos пера Pen.

Метод позволяет рисовать кусочно-линейный график функции, хранящийся в массиве элементов типа TPoint. Если желательно использовать для рисования только часть точек массива, это можно сделать с помощью функции Slice. Если надо нарисовать кривую всего по нескольким точкам, то передавать их в метод Polyline удобно с помощью функции Point.

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

procedure MoveTo(X, Y: Integer);

Метод MoveTo изменяет текущую позицию пера PenPos на заданную точкой (X, Y). Это эквивалентно непосредственной установке свойства PenPos. При перемещении пера методом MoveTo ничего не рисуется.

procedure LineTo(X, Y: Integer);

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

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

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

Рисование прямоугольника без рамки можно осуществить методом FillRect. Прямоугольник со скругленными углами рисуется методом RoundRect. Прямоугольник без внутренней закраски рисуется методом FrameRect.

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

Метод RoundRect рисует на канве прямоугольную рамку со скругленными углами, используя текущие установки пера Pen и закрашивая площадь фигуры текущей кистью Brush. Рамка определяется прямоугольником с координатами углов (X1,Y1) и (X2,Y2). Углы скругляются с помощью эллипсов с шириной X3 и высотой Y3.

Если задать ширину эллипса X3 равной X2 - X1, то верхняя и нижняя границы рамки окажутся целиком скругленными (без прямолинейной части). Если высотаY3 равна Y2 - Y1, то же самое произойдет с левой и правой границами рамки. Если же оба измерения эллипса не меньше размеров рамки, то будет рисоваться просто эллипс. Но, конечно, для рисования эллипса лучше использовать метод Ellipse. Если один из размеров эллипса задать нулевым, то будет рисоваться прямоугольная рамка. Но, конечно, для такой рамки лучше использовать метод Rectangle.

procedure FillRect(const Rect: TRect);

Метод FillRect заполняет прямоугольник канвы, указанный параметром Rect, используя текущее значение Brush. Заполняемая область включает верхнюю и левую стороны прямоугольника, но не включает правую и нижнюю стороны. При использовании FillRect параметр Rect часто задается стандартной функцией Rect.

function Rect(ALeft, ATop, ARight, ABottom: Integer): TRect;

Вызов функции Rect позволяет создать структуру типа TRect, описывающую прямоугольную область с координатами ALeft - левый край, ATop - верх, ARight - правый край, ABottom - низ. Функция применяется для задания значений параметрам и свойствам типа TRect.

type TRect = record

case Integer of

0: (Left, Top, Right, Bottom: Integer);

1: (TopLeft, BottomRight: TPoint);

end;

procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);

type TFillStyle = (fsSurface, fsBorder);

Метод FloodFill закрашивает текущей кистью Brush замкнутую область канвы, определенную цветом и начальной точкой закрашивания (X, Y). Точка с координатами X и Y является произвольной внутренней точкой заполняемой области, которая может иметь произвольную форму. Граница этой области определяется сочетанием параметров Color и FillStyle. Параметр Color указывает цвет, который используется при определении границы закрашиваемой области, а параметр FillStyle определяет, как именно по этому цвету определяется граница. Если FillStyle = fsSurface, то заполняется область, окрашенная цветом Color, а на других цветах метод останавливается. Если FillStyle = fsBorder, то наоборот, заполняется область окрашенная любыми цветами, не равными Color, а на цвете Color метод останавливается.

procedure FrameRect(const Rect: TRect);

Метод FrameRect рисует на канве прямоугольную рамку вокруг области Rect, используя установку текущей кисти Brush. Толщина рамки - 1 пиксель. Область внутри рамки кистью не заполняется. Отличается от метода Rectangle тем, что рамка рисуется цветом кисти (в методе Rectangle - цветом пера Pen) и область не закрашивается (в методе Rectangle закрашивается).

procedure TextOut(X, Y: Integer; const Text: string);

Метод TextOut пишет строку текста Text на канве, начиная с позиции с координатами (X, Y). Надпись делается в соответствии с текущими установками шрифта Font. Фон надписи определяется установками текущей кисти. Текущая позиция PenPos пера Pen перемещается к концу выведенного текста.

Для выравнивания позиции текста на канве можно использовать методы, дающие перед выводом высоту и длину текста в пикселях: методы TextExtent, TextHeight и TextWidth.

Если цвет кисти в момент вывода текста отличается от того, которым закрашена канва, то текст получится выведенным в цветной прямоугольной рамке. Но ее размеры будут точно равны размерам надписи. Если требуется более красивая рамка с отступом от текста или если надо ограничить выводимый текст размерами определенной рамки, следует применять метод TextRect.

procedure TextRect(Rect:TRect; X,Y:Integer; const Text:string);

Метод TextRect пишет строку текста Text на канве, начиная с позиции с координатами (X, Y) - это левый верхний угол надписи. Часть текста, не помещающаяся в прямоугольную область Rect, усекается. Надпись делается в соответствии с текущими установками шрифта Font. Пространство внутри области Rect закрашивается текущей кистью Brush.

Для выравнивания позиции текста внутри области на канве можно использовать методы, дающие перед выводом высоту и длину текста в пикселях: методы TextExtent, TextHeight и TextWidth.

Соседние файлы в папке DELPHI