Иллюстрированный самоучитель по Turbo Pascal

Краски, палитры, заполнения

Процедура Fill Poly

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

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.

Процедура FillEllipse

Обводит линией и заполняет эллипс. Заголовок:

Procedure FillEllipse(X,Y,RX,RY: Integer);

Здесь:

  • X, Y – координаты центра;
  • RX, RY – горизонтальный и вертикальный радиусы эллипса в пикселях.

Эллипс обводится линией, заданной процедурами SetLineStyle и SetColor, и заполняется с использованием параметров, установленных процедурой SetFillStyle.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.