Для
построения прямоугольных фигур имеется
несколько процедур. Первая из них –
вычерчивание одномерного прямоугольника: Rectangle
(x1,
y1
, x2,
y2:integer
), где
x1,
y1
– координаты левого верхнего угла, x2,
y2- координаты правого нижнего угла
прямоугольника. Область внутри
прямоугольника не закрашена и совпадает по
цвету с фоном.
Более эффектные для восприятия
прямоугольники можно строить с помощью
процедуры Bar
(x1,
y1
, x2,
y2:integer),
которая рисует закрашенный прямоугольник.
Цвет закраски устанавливается с помощью SetFillStyle.
Еще одна эффектная процедура: Bar3D
(x1,
y1
, x2,y2,
d:
integer,
a:boolean)
вычерчивает трехмерный закрашенный
прямоугольник (параллелепипед). При этом
используются тип и цвет закраски,
установленные с помощью SetFillStyle.
Параметр d
представляет собой число пикселей,
задающих глубину трехмерного контура. Чаще
всего его значение равно четверти ширины
прямоугольника ( d:=
(x2
- x1)
div
4 ). Параметр a
определяет, строить над прямоугольником
вершину (а:=True)
или нет (a:=False).
Примеры
использования:
1. SetColor(Green);
Rectangle
(200, 100, 250,300);
2.
SetFillStyle(1,3);
Bar(10,10,50,100);
3.
SetFillStyle(1,3);
Bar3D(10,10,50,100,10,True);
Многоугольники
можно рисовать самыми различными способами,
например с помощью процедуры 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.
<<<Предыдущий урок | К содержанию | Следующий урок>>>