Библиотеки (модули) CRT и Graph в Turbo Pascal.

Библиотека (модуль) Graph в Turbo Pascal 7.0.

Модуль Graph представляет собой библиотеку подпрограмм Turbo

Pascal, обеспечивающих полное управление графическими режимами

различных мониторов — CGA, EGA, VGA, SVGA. Библиотека содержит

более 50 графических процедур и функций, как базовых (рисование

точек, линий, окружностей и т.п.), так и расширяющих возможностей

базовых (многоугольники, закрашивание фигур, вывод текста и др.).

Для запуска программ, использующих модуль Graph, должен быть

доступен драйвер egavga.bgi. Для компиляции программ должен быть

доступен модуль GRAPH.TPU.

Основные директивы модуля GRAPH

Uses GRAPH — подключение модуля GRAPH.

InitGraph(gd,gm,’c:tp7′) — инициирование графического режима,

указываем gd-графический драйвер, gm-графическую мода и полный

путь файла поддержки графики egavga.bgi: c:tp7.

ClearDevice — очистка экрана в графическом режиме.

SetColor(14) — установка цвета рисуемых линий.

SetBkColor(1) — установка цвета фона.

SetLineStyle(0,0,3) — установка толщины линий.

SetFillStyle(5,11) — установка стиля и цвета закраски. Число сти-

лей закраски = 0-11.

PutPixel(300,250,15) — рисование точки (X, Y, C), где X, Y -коор-

динаты точки, C — цвет точки. С=0-15.

Line(25,100,100,200) — рисование отрезка прямой линии

(X1,Y1,X2,Y2), где X1,Y1-координаты начала отрезка; X2,Y2-коор-

динаты конца отрезка прямой линии.

Rectangle(25,100,100,200) — рисование прямоугольной рамки

(X1,Y1,X2,Y2), где X1,Y1 и X2,Y2 — координаты соответственно

начала и конца диагонали левого верхнего угла.

Bar(20,70,210,50) — рисование закрашеннго прямоугольника

(X1,Y1,X2,Y2), где X1,Y1 и X2,Y2 — координаты соответственно

начала и конца диагонали левого верхнего угла.

Circle(300,250,80) — рисование окружности (X, Y, R), где X, Y —

координаты центра окружности, R — радиус окружности.

Arc(300,250,135,45,60) — рисование дуги окружности (X,Y,Ф1,Ф2,R),

где Ф1,Ф2 — начальный и конечный углы дуги. X,Y,R — см. выше.

PieSlice(100,100,30,120,70) — рисование сектора окружности

(X,Y,Ф1,Ф2,R).

Ellipse(300,250,0,360,95,40)-рисование эллипса (X,Y,Ф1,Ф2,R1,R2).

Ф1,Ф2 — начальный и конечный углы. R1, R2 — радиусы эллипса.

Sector(400,100,90,290,200,80)- рисование сектора эллипса

(X,Y,Ф1,Ф2,R1,R2).

FillEllipse(X,Y,R1,R2) — рисование закрашенного эллипса

(или окружности при R1=R2).

OutTextXY(25,30,’Текст.’) — вывод текста (X, Y, ‘Текст’).

CloseGraph — закрытие графического режима.

Ниже приведены примеры программ, использующих модуль Graph и

Graph0 (модуль Graph0 — графика для начинающих, упрощенный модуль

Graph). Из комментариев к ним можно узнать о конкретном использо-

вании основных директив модуля Graph при создании простейших гра-

фических изображений.

Пример 1.

Program Ris1;

uses Crt,Graph;

var gd,gm:integer; {gd-графический драйвер, gm-графическая мода}

begin

gd:=detect; {Автоматически определяем графический драйвер}

InitGraph(gd,gm,’c:tp7′); {Инициируем графический режим, указы-

ваем полный путь файла egavga.bgi}

SetLineStyle(0,0,3); {Задаем толщину линии}

SetColor(LightMagenta); {Задаем цвет линии}

SetFillStyle(1,LightGreen); {Задаем стиль и цвет закраски}

PieSlice(100,100,30,120,70); {Рисуем сектор окружности, X,Y,Ф1,Ф2,R}

SetColor(White); {Задаем цвет линии}

SetFillStyle(5,11); {Задаем стиль и цвет закраски}

Sector(400,100,90,290,200,80); {Рисуем сектор эллипса, X,Y,Ф1,Ф2,R1,R2}

Readkey; {Обеспечиваем задержку изображения и выход из программы при

нажатии любой клавиши, например Esc, Enter, Пробела}

CloseGraph {Закрываем графический режим}

end.

Пример 2.

Program Grafika;

uses Crt,Graph,Graph0; {Подключаем модули CRT, GRAPH, GRAPH0}

begin

Init(‘c:tp7’); {Указываем полный путь файла egavga.bgi}

SetColor(14); {Задаем цвет рисуемых линий}

SetLineStyle(1,0,ThickWidth); {Задаем тройную толщину линии}

SetBkColor(1); {Задаем цвет фона}

Circle(300,250,120); {Рисуем окружность, X, Y, R}

SetColor(11);

Circle(300,250,100);

SetColor(13);

Circle(300,250,80);

SetColor(10);

Arc(300,250,135,45,60); {Рисуем дугу, X, Y, Ф1, Ф2, R}

SetColor(12);

Ellipse(300,250,0,360,95,40); {Рисуем эллипс, X, Y, Ф1, Ф2, R1, R2}

PutPixel(300,250,15); {Рисуем точку, X, Y, C}

SetColor(15);

OutTextXY(25,30,’Графика в Turbo Pascal.’); {Вывод текста, X, Y, ‘Текст’}

SetColor(11);

OutTextXY(160,450,’Для выхода из программы нажмите Esc.’);

SetFillStyle(1,14); {Задаем вид закраски (0-11) и цвет закраски С}

Bar(20,70,210,50); {Рисуем закрашенный прямоугольник, X1,Y1,X2,Y2}

SetColor(11);

Rectangle(25,100,100,200); {Рисуем прямоугольную рамку, X1,Y1,X2,Y2}

SetColor(14);

Line(25,100,100,200); {Рисуем прямую линию, X1,Y1,X2,Y2}

Readkey;

CloseGraph;

end.

Здесь X, Y, X1, Y1, X2, Y2 — координаты основных точек на экране;

Ф1, Ф2 — углы дуг, круговых и эллиптических секторов;

R, R1, R2 — радиусы окружностей, эллипсов, дуг и секторов.

С — цвет линий (0-15).

Пример 3. Флаг России.

program Flag_RUS;

uses CRT,Graph,Graph0;

begin

Init(‘c:tp7’);

SetFillStyle(1,15);

Bar(0,0,320,50);

SetFillStyle(1,1);

Bar(0,51,320,101);

SetFillStyle(1,4);

Bar(0,102,320,152);

ReadKey;

CloseGraph;

end.

Примеры программ построения графиков функций:

1. Построение графика параболы в декартовых координатах (путь

S(t)=gt2/2 при свободном падении тела). Построение производится

по точкам.

Program Put3;

uses Crt,Graph,Graph0;

var t1,S,H,n:integer;Y,g,dt,t:real;

begin

Init(‘c:tp7’);

SetColor(14);

OutTextXY(25,30,’Путь S(t)=gt2/2 при свободном падении.’);

OutTextXY(25,50,’Выход — любая клавиша.’);

SetColor(10);

Line(0,470,550,470);

Line(0,0,0,470);

g:=9.81;

t:=0;

n:=100;

repeat

Y:=g*t*t/2;

dt:=1/(n+1);

t:=t+dt;

t1:=round(6*t);

S:=round(Y);

H:=round(470-S/70);

PutPixel(t1,H,11);

until t>80;

Readkey;

CloseGraph;

end.

2. Построение графика функции (улитки Паскаля) в полярных коорди-

натах. Если в прямоугольных (декартовых) кординатах задают точку

A на плоскости по её координатам x, y, то в полярных координатах

точку задают по её радиус-вектору R и углу fi между вектором R и

осью X (смотрите чертёж на рисунке). Функция в декартовых коорди-

натах имеет вид y=f(x), в полярных координатах R=F(fi). Связь

между декартовыми и полярными координатами: x=R*cos(fi),

y=R*sin(fi), R=SQRT(x*x+y*y).

Program Ulitka;

uses crt, graph, graph0;

const xc=320; yc=175; k=0.775;

var fi,dfi,R,a:real; x1,y1,x2,y2,n:integer;

Function F(fi:real):real;

begin F:=a/2+a*cos(fi);

end;

begin

clrscr;

writeln(‘Улитка Паскаля: R=1+a*cos(fi).’);

write(‘Введите коэффициент a=0.5-2; a=’);

read(a);

a:=100*a;

write(‘Введите число точек n>=100; n=’);

read(n);

init(‘C:TP7’);

cleardevice;

outtextxy(10,10,’Улитка Паскаля: R=1+a*cos(fi).’);

setcolor(10);

line(xc,0,xc,349);

line(0,yc,639,yc);

dfi:=2*pi/n;

x1:=xc; y1:=yc; fi:=0;

while fi