Построение геометрических фигур
Библиотека GRAPH содержит ряд процедур, которые на основе задаваемых параметров формируют различные геометрические фигуры.
388
Для построения прямоугольных фигур существуют несколько процедур. Процедура вычерчивания одномерного прямоугольника имеет следующий формат:
Rectangle (Х1, Y1, Х2, Y2: integer),
где Х1, Y1 - координаты левого верхнего угла, Х2, Y2 - координаты правого нижнего угла прямоугольника. Более удобные для восприятия закрашенные прямоугольники можно строить с использованием процедуры:
Ваг(х1, у1, х2, у2: integer),
которая рисует закрашенный столбец. Цвет закраски устанавливается с помощью SetFillStyle. Процедура
Bar3D(x1, у1, х2, у2: integer; Depth: word; Top: boolean)
вычерчивает трехмерный закрашенный прямоугольник. При этом используются тип н цвет закраски, установленные с помощью процедуры SetFillStyle. Параметр Depth представляет собой число пикселов, задающих глубину трехмерного контура. Чаще всего его значение принимают равным четверти ширины прямоугольника:
Depth:=(X2-X1)DIV4.
Параметр Тор определяет, нужно ли строить над прямоугольником вершину (Тор:=Тше) или нет (Top:=False).
В Turbo Pascal имеется процедура DrowPoly, которая позволяет строить любые многоугольники линией текущего цвета, стиля и толщины. Она имеет следующий формат:
DrawPoly(NumPoints:word; VAR PolyPoints).
Нетипизированный параметр PolyPoints содержит координаты каждого пересечения в многоугольнике, параметр NumPoints задает число координат в PolyPoints. Следует иметь в виду, что при вычерчивании замкнутой фигуры с N вершинами в вызове процедуры DrowPoly нужно передать N+1 координату, где координата вершины с номером N будет равна координате вершины с номером 1. Закраску многоугольника можно произвести, используя процедуру
FillPoly(NumPoints:word; VAR PolyPoints).
Алгоритмы построения кривых сложны для самостоятельной реализации, поэтому рационально использовать готовые процедуры модуля GRAPH. Для задания углов применяется полярная система координат.
Процедура вычерчивания окружности текущим цветом имеет следующий вид:
Circle(X,Y,Radius: word),
где Х, У - координаты центра окружности, a Radius - радиус. Для создания
псевдообъемных фигур используются дуги. Их можно вычертить с помощью процедуры
Arc(X,Y:integer;StAngle,EndAngle,Radius:word),
где StAngle и EndAngle - начальный и конечный угол вырисовки. Цвет для вычерчивания устанавливается процедурой SetColor. Работа с различными типами кривых
389
требует информации о координатах последнего обращения к Arc. Ее можно получить, выполнив процедуру
GetArcCoords(VARArcCoords:ArcCoordsType),
где переменная ArcCoords принадлежит к стандартному типу
Туре
ArcCoordsType=Record
х, у: integer;
xStart.yStart: integer;
zEnd.yEnd: integer
End;
Процедура возвращает переменную, содержащую координаты центра X и У, начальную xStart, yStart и конечную xEnd, yEnd позиции указателя при выполнении последней команды Arc.
Для построения эллиптических дуг предназначена процедура
Ellipse(X, Y: integer; StAngle, EndAngle: word; xR, yR: word),
где X, Y - центр эллипса, xR и yR - горизонтальная и вертикальная оси. Дуга эллипса вычерчивается от начального угла StAngle до конечного угла EndAngle текущим цветом. Чтобы создать закрашенный эллипс, используется процедура
FillEllipse(X,Y:integer;xR,yR:word),
где X, Y - центр эллипса, xR и yR - горизонтальная и вертикальная оси. Заполнитель устанавливается процедурами SetFillStyle или SetFillStyle.
В программах часто требуется разделить окружность на сектора. Это можно сделать, используя процедуру
PieSlince(X,Y:integer; StAngle, EndAngle, Radius:word),
которая рисует и заполняет маской сектор круга. Контур сектора вычерчивается текущим цветом, а при закрашивании используется тип и цвет закраски, заданные процедурами SetFillStyle и SetFillPattern. Можно создать и заполнить сектор в эллипсе. Для этого используется процедура
Sector(X,Y:integer; StAngle, EndAngle,xR,yR:word),
где X,Y- центр; xR, yR - горизонтальный и вертикальный радиусы.
Вычерчивание производится текущим цветом и заполняется стилем, заданным процедурами SetFillStyle или SetFillPattern.
В следующем примере приведена программа, рисующая на желтом фоне синего снеговика.
Program SnowMan;
Uses Graph, Crt;
Var DriverVar, ModeVar: integer;
c: char;
390
Begin
DriverVar:=Detect;
InitGraph(DriverVar, Modevar,'');
SetBkColor( 14); SetColor( 1);
Circle(300,300,50);
Circle(300,215,35);
Circle(300,160,20);
Circle(300,180,5); Circle(290,140,5); Circle(310,140,5);
Line(335,215,370,200); Line(265,215,230,200);
c:=readkey;
SetBkColor(0);SetColor(GetMaxColor);
CloseGraph;
End.
391
388 :: 389 :: 390 :: 391 :: Содержание
Содержание раздела