Turbo Pascal (Borland Pascal) 7.0. Руководство пользователя


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


Многоугольники можно рисовать самыми различными способами, например с помощью процедуры Line. Однако в Турбо Паскале имеется процедура DrawPoly, которая позволяет строить любые многоугольники линией текущего цвета, стиля и толщины. Она имеет формат DrawPoly( a: word, var PolyPoints)

Параметр PolyPoints является нетипизированным параметром, который содержит координаты каждого пересечения в многоугольнике. Параметр а задает число координат в PolyPoints. Необходимо помнить, что для вычерчивания замкнутой фигуры с N вершинами нужно передать при обращении к процедуре DrawPoly N+1 координату, где координата вершины с номером N будет равна координате вершины с номером 1.

Проиллюстрируем на примере:

program tr; {Программа вычерчивает в центре экрана треугольник красной линией} uses crt, graph; var gd, gm: integer; pp: array[1..4] of PointType; xm, ym, xmaxD4, ymaxD4:word; begin gd:= detect; Initgraph(gd, gm, ‘ c/bp’); xm:=GetmaxX; ym:=GetmaxY; xmaxD4:=xm div 4; ymaxD4:= ym div 4; {определение координат вершин} pp[1].x := xmaxD4; pp[1].y := ymaxD4; pp[2].x := xm - xmaxD4; pp[2].y := ymaxD4; pp[3].x := xm div 2; pp[3].y := ym - ymaxD4; pp[4] :=pp[1]; SetColor(4); {цвет для вычерчивания} DrawPoly(4,pp); {4 – количество пересечений +1} readln; CloseGraph end.

В результате работы программы на экране появится красный треугольник на черном фоне. Изменить фон внутри треугольника можно с помощью процедуры FillPoly(a: word, var PolyPoints). Значения параметров те же, что и в процедуре DrawPоly. Действие тоже аналогично, но фон внутри многоугольника закрашивается. В качестве примера нарисуем в левой верхней части экрана четырехугольную звезду зеленого цвета:

program g; uses crt, graph; const Star: array[1..18] of integer = (75, 0, 100, 50, 150, 75, 100, 100, 75, 150, 50, 100, 0, 75, 50, 50, 75, 0); var gd, gm: integer; begin gd:= detect; initgraph(gd, gm, ‘ c/bp’); SetFillStyle(1,2); FillPoly(9,Star); {9 – количество пересечений + 1} CloseGraph; end.



Содержание раздела