ГРАФ ІЧНИЙ МОДУЛЬ GRAPH

Попередня сторінка Зміст Задачі Наступна сторінка

Модуль Graph призначений для роботи з екраном дисплея в графічному режимі. Засоби модуля Graph стають доступними для користувача після його підключення до програми в розділі Uses. Крім модуля Graph в розділі Uses підключають і модуль Crt, так як багато процедур і функцій модуля Graph використовують константи модуля Crt. таким чином, розділ модулів має вигляд

Uses Crt,Graph;

Графічний режим встановлюється процедурою InitGraph з трьома параметрами GraphDriver, GraphMode цілочисельного типу integer і третім параметром типу string. Перші два параметри визначають графічний режим, а третій вказує шлях до графічного драйвера (файла з поширенням BGI). Щоб графічний режим встановлювався автоматично, то перед викликом процедури InitGraph записують оператори присвоєння

GraphDriver:=Detekt;
GraphMode:=0;

Якщо використовується графічний адаптер EGA або VGA, то графічний драйвер знаходиться у файлі egava.bgi, якщо адаптер CGA, то - в файлі cga.bgi. Інша процедура CloseGraph звільняє пам’ять від графічного драйвера і переводить дисплей у попередній режим роботи. Отже, для роботи у графічному режимі програма повинна містити рядки

Uses Crt,Graph;
Var GraphDriver,GraphMode:integer;
Begin
GraphDriver:=Detect;
GraphMode:=0;
InitGraph(GraphDriver,GraphMode,'egavga.Bgi');
CloseGraph;
End. 

Наведемо основні процедури модуля Graph. Інформацію про решту процедур і функцій читач може знайти в довіднику системи Turbo Pascal.

Arc(X,Y:integer; поч_кут, радіус: world);

Процедура креслить дугу кола з центром в точці (X, Y) і радіусом '' радіус'. Дуга малюється від початкового кута (''поч_кут'') до кінцевого кута (кін_ кут) проти годинникової стрілки. При цьому використовується колір, встановлений процедурою SetColor.

Bar(X1,Y1,X2,Y2:integer);

Процедура креслить стовпчик, використовуючи стандартний тип і колір зафарбовування.

Bar3D(х1,y1,х2,y2:integer);

Процедура будує зафарбований тривимірний паралелепіпед. Колір контуру паралелепіпеда встановлюється процедурою SetColor, а тип і колір зафарбовування – процедурою SetFillPattern. Якщо вказана в якості "вершини" змінна набуває значення True, то для паралелепіпеда малюється трьох мірна вершина, в противному випадку вершина не малюється (це дозволяє малювати декілька паралелепіпедів, розташованих один над одним):

Circle(X,Y:integer; <радіус>: word);

Процедура креслить коло з центром в точці (X, Y) радіуса "радіус".

Ellipse(X,Y:integer;<поч_кут>:world;<рад_X>,<рад_Y>:word);

Процедура малює еліптичну дугу, використовуючи (X, Y) як точку центра, а "рад_X", "рад_Y"-як горизонтальну і вертикальну осі. Дуга еліпса креслиться від початкового кута (параметр "поч_кут") до кінцевого кута (параметр "кін_кут") встановленим кольором проти годинникової стрілки.

DrawPoly(<число_хоорд>:word; var <коорд_верш>);

Процедура, використовуючи встановлений тип прямої і встановлений колір, креслить контур многокутника. "коорд_верш"-ім'я масиву, який містить координати вершин многокутника. "число_коорд"задає число координат в масиві "коорд_верш". Координата складається з двох значень: значення X і значення Y.

FillEllipse(X,Y:integer; <X_радіус>,<Y_радіус>:word);

Процедура малює зафарбований еліпс, використовуючи точку з координатами (X, Y)як центр, а"Х_радіус" і "Y_радіус" як горизонтальну і вертикальну вісь.

FiLLPoLy(<число_коорд>:word; Var <коорд_верш>);

Як і процедура DrawPoLy малює многокутник, а потім його зафарбовує.

FLoodFiLL(X,Y,<границя>:word);

Як процедура DrawPoly має многокутник, а потім його зафарбовує.

FloodFill(X,Y,<границя>:word);

Процедура заповнює замкнуту область. Точка (X, Y) є внутрішньою точкою області. Для заповнення області, обмеженої кольором, який визначає параметр "границя", використовується встановдений тип зафарбовування. Якщо тачка (Х, Y) знаходиться поза замкнутою областю, то заповнюється зовнішня її частина.

Line(X1,Y1,X2,Y2:integer);

Процедура креслить пряму лінію з точки (X1, Y1) в точку (X2, Y2). Колір лінії встановлюється процедурою SetColor.

OutText(<рядок>:string);

Процедура виводить "рядок" символів у графічному режимі.

OutTextXY(X,Y:integer;<рядок>:string);

Процедура виводить значення параметра "рядок", починаючи з точки, заданої координатами (X, Y). Якщо рядок занадто довгий і виходить за межі екрану, то він врізається.

PieSlice(X,Y:integer;<поч_кут>,<кін_кут>,R:word);

Процедура креслить і заповнює встановленим кольором сектор круга радіуса"R". Точка (X, Y)-центр кола, а сектор малюється від початкового до кінцевого кута проти годинникової стрілки. Тип зафарбовування визначається процедурою SetFillPattern.

PutPixel(X,Y:integer;<колір>:word);

Процедура виводить точку з координатами (X, Y), колір якої визначається параметром "колір".

Rectangle(x1,y1,x2,y2:integer);

Процедура креслить прямокутник; використовуючи встановлений колір, (x1, y1)-лівий верхній кут, (x2, y2)-правий нижній кут прямокутника.

Sector(x,y:integer;<поч_кут>,<кін_кут>,<x_рад>,<y_рад>:word);

Процедура креслить і заповнює еліптичний сектор. (X, Y)-центр еліпса, "X_радіус", "Y_радіус"- горизонтальний і вертикальний радіуси. Сектор малюється від початкового кута "поч_кут" до кінцевого кута "кін_кут" проти годинникової стрілки встановленим кольором і заповнюється типом зафарбовування, встановленим процедурою SetFillPattern.

SetColor(<колір>:word);

Процедура встановлює колір, заданий параметром "колір". При наданні кольору можуть використовуватись як числові значення, так і константи модуля Crt.

SetFillPattern(Pattern:FillPattern; Color;word);

Процедура встановлює тип зафарбовування і його колі для процедур FillPoly, Bar, FloodFill, Bar3D i PieSlice.

Приклад. 
Const Gray 50; FillPatternType=($AA, $55, $AA, $55, $AA, $55, $AA, $55);
............
SetFillPattern(Gray50, Red);
............

Попередня сторінка Зміст Задачі Наступна сторінка