attachments_23-05-2012_20-59-10 / Модуль graph
.docМодуль GRAPH
Модуль представляет собой библиотеку подпрограмм, которая полностью обеспечивает управление графическим режимом.
Чтобы запустить программу, в которой используются процедуры модуля, необходимо поместить в рабочий каталог соответствующие графические драйвера – это файлы с расширением bgi.
Любая программа, предназначенная для работы с графикой обязательно должна содержать блок вызова процедур инициализации графического режима и обращения к процедуре ее завершения. В таком блоке инициализации графического режима проверяется правильность инициализации, если все операции прошла успешно, разрешается дальнейшая работы программы.
Uses Graph;
var GrDr, GrMode: integer;
begin
GrDr:= Detect;
InitGraph (GrDr, GrMode, ‘C\BP\BGI’);
if GraphResult <> 0 then
begin
writeln (‘Ошибка инициализации’);
halt (1);
end;
…
CloseGraph;
Процедура CloseGraph освобождает память, распределяет под драйвера графики, файлы шрифтов, промежуточные данные и восстанавливает тот режим работы адаптера, который был установлен. Последующее переключение в графический режим возможно только путем повторной инициализации.
Построение изображение на экране
Система координат в графическом режиме начинается с верхнего левого угла с точки с координатами (0, 0). Х увеличивается слева направо, У – сверху вниз. При этом экран представляется в виде прямоугольного массива определенных точек.
Основные процедуры модуля
MoveTo (x, y: integer) – перемещение курсора в точку в координатами (х, у);
MoveRel (dx, dy: integer) – указатель перемещается на dx точек по горизонтали и dy точек по вертикали относительно последнего положения курсора;
ClearDevice – стирает изображение на экране, при этом онулирует все установки цвета и фона, указатель перемещает в точку (0, 0);
PutPixel (x, y, color) – вывод точки цвета color;
GetPixel (x, y): word - определяет номер цвета точки, которая имеет координаты (x, y);
Line (x1, y1, x2, y2) – вывод отрезка;
LineTo (x, y) – строит отрезок из текущего расположения курсора до точки с координатами (x, y);
Rectangle (x1, y1, x2, y2) – строит прямоугольник на плоскости;
Bar (x1, y1, x2, y2) - прямоугольник с закрашенной областью;
Bar3D (x1, y1, x2, y2, D3, Top) – объемный четырехугольник, где D3 – глубина в пикселях;
Circle (x, y, r) – окружность;
Arc (x, y, st, end, r) – дуга, где st – начальный угол, end – конечный угол;
Ellipse (x, y, st, end, xr, yr) – эллипс, где xr, yr – меньший и больший радиус;
DrawPoly (Num, var PolyPoints) – изображение ломаной, где Num – количество точек, PolyPoints – массив координат точек.
Пример: построение шестиугольника
Type
PointType = record
x, y: integer;
end;
var
Points: array [1..6] of PointType;
…
begin
<инициализация графики>
Randomize;
repeat
cleardevice;
for i:=1 to 5 do
begin
Points[i].x:= Random (100);
Points[i].y:= Random (20);
end;
Points[6].x:= Points[1].x;
Points[6].y:= Points[1].y;
DrawPoly (6, Points);
until Ch=#27;
end.
Пример: Движение заданного объекта по экрану в произвольном направлении:
program Anim;
Uses crt, graph;
var
h, x, y, gd, gm, r: integer;
begin
gd:=detect;
InitGraph (gd, gm, ‘ ‘);
writeln (‘r: ‘);
readln (r);
h:=1;
for x:=0 to 640-r do
begin
setcolor (7);
circle (x, y, r);
circle (x, y, 2*r);
delay (3000);
setcolor (0);
circle (x, y, r);
circle (x, y, 2*r);
x:=x+h;
y:=y+h;
end;
readkey;
closegraph;
end.