Процедура FillPoly

Обводит линией и закрашивает замкнутый многоугольник. Заголовок:

Procedure FillPoly(N: Word; var Coords);

Здесь N – количество вершин замкнутого многоугольника; Coords – переменная типа PointType, содержащая координаты вершин.

Координаты вершин задаются парой значений типа Integer: первое определяет горизонтальную, второе вертикальную координаты. Для них можно использовать следующий определенный в модуле тип:

type

PointType = record

х, у : Integer

end;

Стиль и цвет линии контура задаются процедурами SetLineStyle и SetColor, тип и цвет заливки – процедурой SetFillStyle.

В следующем примере на экран выводятся случайные закрашенные многоугольники.

Uses Graph, CRT;

var

d, r, e: Integer;

p : array [1..6] of PointType; n, k : Word;

begin

{Инициируем графику}

d := Detect; InitGraph(d, r, ' ') ;

e := GraphResult; if e <> grOk then

WriteLn(GraphErrorMsg(e))

else

begin

{Создаем окно в центре экрана}

d := GetMaxX div 4;

r := GetMaxY div 4;

Rectangle(d,r,3*d,3*r);

SetViewPort(d+l,r+l,3*d-l,3*r-l,ClipOn);

{Цикл вывода случайных закрашенных многоугольников}

repeat

{Выбираем случайный цвет и узор)

SetFillStyle(Random(12),Random(succ(GetMaxColor)));

SetColor (Random(succ(GetMaxColor)));

{Назначаем случайные координаты}

n := Random (4) + 3 ; for k := 1 to n do with p[k] do

begin

x := Random (GetMaxX div 2);

у := Random (GetMaxY div 2)

end;

FillPoly (n, p) {Выводим и закрашиваем}

until KeyPressed;

if ReadKey=#0 then k := ord(ReadKey);

CloseGraph

end

end.