ГРАФ ІЧНИЙ МОДУЛЬ 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);
............
![]() |
Зміст | Задачі | ![]() |