Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Прямоугольники, многоугольники и полосы.

Вы можете рисовать прямоугольники вызывая предикат rectangle, а так-

же многоугольники с помощью drawpoly и fillpoly. Вы также можете рисовать

2-х и 3-х мерные полосы с помощью bar и bar3d.

Rectangle/4

rectangle рисует прямоугольник.

rectangle(Left,Top,Rjgt,Bottom) /(i,i,i,i)*/

(integer,integer,integer,integer)

(Left,Top) задает верхний левый угол прямоугольника, а (Right,

Bottom) ее нижний правый угол.

bar/4

bar рисует прямоугольник и заполняет его.

bar(Left,Top,Right,Bottom) /*(i,i,i,i)*/

(integer,integer,integer,integer)

bar не рисует полосу. Для рисования двумерной полосы используйте

bar3d с параметром Depth равным 0. Верхний левый и правый нижний углы

прямоугольника задаются координатами (Left,Top) и (Right,Bottom) соответ-

ственно.

Bar3d/6

bar3d рисует трехмерную прямоугольную полосу и затем заполняет ее.

bar3d(Left,Top,Right,Bottom,Depth,Topflag) /*(i,i,i,i,i,i)*/

(integer,integer,integer,integer,integer,integer)

Контур трехмерной полосы рисуется текущим видом линии. Толщина (глу-

бина) полосы в пикселах задается параметром Depth. Чтобы вычислить типич-

ную глубину для bar3d можно взять 1/4 от его ширины, как в следующем при-

мере:

Т25 = (Right - Left)/4,

bar3d(Left,Top,Right,Bottom,T25,1), ...

Параметр Topflag определяет рисовать ли верхнюю плоскость полосы.

Если Topflag не равен нулю, то верхняя плоскость вырисовывается. В про-

тивном случае верхняя плоскость не выводится (это позволяет строить нес-

колько полос одна над другой). Верхний левый и правый нижний углы прямоу-

гольника задаются координатами (Left,Top) и (Right,Bottom) соответствен-

но.

Drawpoly/1

drawpoly рисует многоугольник с таким количеством вершин, сколько

пар координат в списке PolyPointsList, используя текущие вид линий и

цвет.

drawpoly(PolyPointsList) /*(i)*/

(bgi_ilist) /*(= integer*)*/

PolyPointsList имеет описание типа bgi_ilist = integer*.

PolyPointsList содержит последовательность целых чисел. Каждая пара целых

чисел определяет координаты (x,y) вершины многоугольника.

Замечание: Для того, чтобы нарисовать замкнутую ломаную (т.е.

многоугольник) с n вершинами, список PolyPointsList должен со-

держать n+1 пар координат, где (n+1)-я пара координат совпадает

с первой.

Fillpoly/1

fillpoly рисует многоугольник точно также, как и drawpoly, а затем

заполняет его.

fillpoly(PolyPointsList) /*(i)*/

(bgi_ilist) /*(= integer*)*/

PolyPointsList имеет описание типа bgi_ilist = integer*. Подробнее

смотрите описание drawpoly.

Пример построения многоугольников.

/* Program CH17EX03.PRO */

include "GRAPDECL.PRO"

goal

initgraph(detect, 0, GraphDriver, GraphMode, ""),

rectangle(0, 0, 100, 100),

bar3d(100, 10, 200, 100, 5, 1),

bar(30, 30, 80, 80),

drawpoly([50, 100, 100, 100, 150, 150, 50, 100]),

fillpoly([50, 10, 90, 50, 50, 90, 10, 50]),

readchar(_),

closegraph.

Заполнение областей.

Вы можете заполнить (закрасить) нарисованные фигуры с помощью преди-

ката floodfill или сочетая рисование и заполнение, вызывать fillpoly и

pieslice. Вы можете переопределять шаблон заполнения с помощью

setfillstyle или определять свой собственный с помощью setfillpattern.

Информацию о текущих виде и цвете заполнения вы можете узнать вызы-

вая getfillsettings. О виде заполнения, заданном пользователем вы можете

узнать вызывая getfillpattern.

getfillsettings/2

getfillsettings возвращает информацию о текущих шаблоне и цвете за-

полнения.

getfillsettings(FillPattern, FillColor) /*(o,o)*/

(integer, integer)

setfillsettings/2

setfillsettings устанавливает заданные шаблон и цвет заполнения.

setfillsettings(FillPattern, FillColor) /*(o,o)*/

(integer, integer)

Описания констант, определенные в GRAPDECL.PRO, дают имена для шаб-

лонов заполнения области, включая один дополнительный шаблон, определяе-

мый пользователем.

Таблица 17.6 Виды заполнения областей

--------------------------------------------------------------

Название Значение Описание

--------------------------------------------------------------

empty_FILL 0 Заполнение фоновым цветом

solid_FILL 1 Сплошное закрашивание

line_FILL 2 Заполнение линиями ------

ltslash_FILL 3 Заполнение ////

slash_FILL 4 Заполнение ////, толстые линии

bkslash_FILL 5 Заполнение \\\\, толстые линии

ltbkslash_FILL 6 Заполнение \\\\

hatch_FILL 7 Заполнение разреженной решеткой

xhatch_FILL 8 Заполнение плотной решеткой

interleave_FILL 9 Заполнение промежуточными линиями

widedot_FILL 10 Заполнение разреженным штрихом

closedot_FILL 11 Заполнение плотным штрихом

user_FILL 12 Заполнение, определяемое

пользователем

--------------------------------------------------------------

Все виды заполнения кроме empty_FILL происходят текущим цветом за-

полнения FillColor. Вид empty_FILL использует текущий цвет фона.

user_FILL можно получить, вызвав getfillsettings, когда вы используете

setfillpattern для определения своего вида заполнения.

Соседние файлы в папке Документация