52841.fb2 Я готуюсь до курсу інформатики. Алгоритмізація та програмування - читать онлайн бесплатно полную версию книги . Страница 31

Я готуюсь до курсу інформатики. Алгоритмізація та програмування - читать онлайн бесплатно полную версию книги . Страница 31

УРОК 30. Робота з графікою

Мета уроку: дати поняття графічного режиму роботи монітору, ініціалізації графічного режиму, основних процедур та функцій для побудови графічних зображень.

Теоретичний матеріал

Режими роботи монітору було розглянуто в уроці 9.

Для роботи в графічному режимі використовується модуль Graph, який складається з більш ніж 90 графічних процедур і функцій. Усі стандартні засоби модуля Graph стають доступними після його підключення до програми в розділі Uses: Uses Graph; Зверніть увагу що для того, щоб графічна бібліотека стала доступною, слід прописати до неї шлях доступу в пункті меню Options/Directories / Unit directories оболонки Паскаль. За замовчуванням цей шлях доступу наступний: BP\UNITS відповідного диску. Екран у графічному режимі може адресуватися за допомогою системи координат, причому значення X(номера стовпчика) збільшується зліва направо, а значення У (номера рядка) збільшується зверху до низу. За замовчуванням координати екрана мають такий вигляд:

(0,0) - лівий верхній кут;

(639,0) - правий верхній кут;

(319,239)-центр;

(0,479) - лівий нижній кут екрана;

(639,479) - правий нижній кут.

Графічна система підтримує поточний покажчик СР, який виконує ті ж функції, що і курсор, але не виводиться на екран. Для переміщення курсора використовуються процедури MoveTo, LineTo, InitGraph, LineRel, MoveRel і деякі інші. У графічному режимі можна виводити текст, причому є можливість масштабування і вибору типу шрифту, виконання вирівнювання виведеного тексту тощо. Наявні програми підтримують різні засоби малювання і заповнення фігур, зокрема, точку, лінії, окружності, еліпси, прямокутники, багатокутники. Для всіх команд виведення можна встановити графічне вікно (прямокутну область на екрані заданого розміру). Уся графічна інформація виводиться у поточне вікно, поки не активізується інше. При установці віконного режиму всі графічні зображення, якщо вони виходять за межі вікна, усікаються. При виконанні графічної операції може виникнути помилка, код якої можна одержати за допомогою функції GraphResult. Код помилки може приймати одне з наступних значень:

0:

Помилки немає

-1:

Режим BGI не встановлений

-2:

Графічні апаратні засоби не виявлені

-3:

Файл драйвера пристрою не знайдений

-4:

Неправильно визначений файл драйвера пристрою

-5:

Не вистачає пам’яті для завантаження драйвера

-6:

Вихід за межі пам’яті при заповненні

-7:

Вихід за межі пам’яті при заливанні

-8:

Файл із шрифтом не знайдений

-9:

Не вистачає пам’яті для завантаження шрифту

-10:

Неправильний графічний режим для обраного драйвера.

Для забезпечення переходу екрану монітора в графічний режим програма має починатися викликом процедури InitGraph, що автоматично виявляє апаратні засоби і завантажує відповідний графічний драйвер. Стандартний драйвер EGAVGA.BGI розміщується у каталозі BPM3GI відповідного диску. Якщо апаратні засоби не виявлені або в процесі ініціалізації відбулася помилка, то на екран виводиться повідомлення про помилку і програма зупиняється.

Нижче наведені деякі процедури та функції для роботи в графічному режимі, що містяться в бібліотеці Graph.

Arc(X,Y:integer; поч_кут, кін_кут, padiycword) - процедура, результатом роботи якої є дуга окружності з центром в точці (X,Y) і радіусом «радіус». Дуга креслиться від початкового кута («почкут») до кінцевого кута («кінкут») поточним кольором малювання.

Bar(Xl,YJ,X2,Y2) - процедура малює зафарбований прямокутник, використовуючи колір зафарбування, що встановлюється процедурою SetFillStyle. Контур прямокутника креслиться кольором і типом лінії, що встановлені процедурами SetColor і SetLineStyle. Точки з координатами (X1, Y1) та (Х2, Y2) задають дві діагональні вершини прямокутника.

Bar3D(Xl, Yipb, Y2:integer; глибина: word, вершина: boolean) - процедура малює зафарбований тривимірний паралелепіпед. Контур паралелепіпеда креслиться кольором і типом лінії, що встановлені процедурами SetColorіSetLineStyle, тип і колір зафарбування встановлюється процедурою SetFillStyle. «Глибина» — число елементів зображення, що задають третій вимір тривимірного контуру. Якщо змінна, зазначена як параметр «вершина», приймає істинне значення (True), то для паралелепіпеда малюється тривимірна вершина, інакше — вершина не малюється.

Circle(X, Ydnteger;радіус: word) - процедура малює окружність поточним кольором. Точка (X, Y) - центр окружності, а «радіус» — її радіус.

ClearDevise - процедура очищує поточний графічний екран і підго-товлює його для виведення даних.

ClearViewport - процедура очищує поточне вікно.

CloseGraph - процедура припиняє роботу графічної системи (закриття графіки) і повертає монітор до текстового режиму.

DetectGraph(Var драйвер, режим: integer) - процедура перевіряє наявність відповідних апаратних засобів і визначає, який графічний режим і драйвер варто використовувати.

Ellipse(X,Y:integer; поч_кут, кін_кym:word; paдX,paдY:word) -процедура малює еліптичну дугу, використовуючи (X, Y), як точку центра і «радХ», «padY» - як радіуси на горизонтальній і вертикальній осях. Дуга еліпса малюється від початкового кута (параметр «почкут») до кінцевого кута (параметр «кін_кут») поточним кольором.

FillEllipse(X, Y:integer;Xpaдiyc, Ypaдiyc:word) - процедура вичерчує зафарбований еліпс, використовуючи точку з координатами (X, Y), як центр, а «Храдіус» і «Ypaдiyc» - у якості радіусів на горизонтальній та вертикальній осях. Контур еліпса креслиться кольором і типом лінії, що встановлені процедурами SetColor і SetLineStyle, тип і колір зафарбування встановлюється за допомогою процедури SetFillStyle.

FloodFill(X,Y,границя:word) - процедура заповнює замкнену область, використовуючи поточний заповнювач, заданий процедурою SetFillStyle. Точка (X,Y) є внутрішньою точкою області, що зафарбовується. Заповнюється область, обмежена лінією, що має колір, визначений параметром «границя». Якщо точка (X,Y) знаходиться усередині замкненої області, то заповнюється внутрішня область. Якщо ця точка знаходиться поза замкненої області, то заповнюється зовнішня частина.

GetBkColor: word - функція повертає поточне значення кольору тла (у діапазоні 0 - 15), встановлене процедурою SetBkColor.

GetCohr: word - функція повертає поточне значення основного кольору малювання (у діапазоні 0-15), встановлене раніше процедурою SetColor.

GetPixel(X,Y:mteger): word - функція повертає значення (колір) елемента зображення в точці (X, Y).

GetX: integer - функція повертає Х-координату поточного СР.

GetY: integer - функція повертає Y-координату поточного СР.

InitGraph - процедура ініціалізує графічну систему і переводить апаратну частину в графічний режим.

L4ne(Xl, Yl, X2, Y2 : integer)- процедура вичерчує пряму лінію (товщина і тип якої встановлений процедурою SetLineStyle, колір - процедурою SetColor) із крапки (X1, Y1)y крапку (Х2, Y2).

LineRel(Dx,Dy) - процедура вичерчує пряму лінію з точки поточного СР в точку, задану відносною відстанню (Dx, Dy) від поточного покажчика.

UneTo(X,Y: integer) - процедура малює пряму лінію з точки, у якій знаходиться поточний покажчик СР, у точку з координатами (X, Y).

MoveRel(Dx, Dy : integer)- процедура переміщує покажчик СР з поточної точки у точку, задану відносною відстанню (Dx, Dy).

MoveTo(X, Y: integer) - процедура переміщує поточний покажчик СР у точку з координатами (X, Y).

OutText (рядок: string) - процедура виводить текст «рядка» на монітор, починаючи з точки розташування покажчика СР.

OutTextXY(X, Y: integer; текст_рядок: string) - процедура виводить текст, що міститься у «текст_рядок», починаючи з точки, заданої координатами (X, Y). Якщо рядок занадто довгий і виходить за межі екрана чи поточної області перегляду, то він усікається.

PieSlice (X, Y: integer; нач_кут, кін_кут R: word) - процедура викреслює і заповнює поточним кольором сектор кола радіусом R. Точка (X, Y) -центр кола, а сектор малюється від початкового до кінцевого кута. Тип і колір зафарбування попередньо задається процедурою SetFillStyle.

PutPixelfX, Y: integer; ел_зображ : word) - процедура зафарбовує точку з координатами (X, Y) у колір, що визначається параметром «ел_зображ».

RectanglefXl, Yl, Х2, Y2: integer) - процедура вичерчує прямокутник, використовуючи поточний колір і тип лінії. (X1, Y1) та (Х2, Y2) - координати діагонально протилежних вершин прямокутника.

Sector (X, У: integer; поч_кут, кін_кут,Х_Радіус, Y_Padiyc: word)— процедура вичерчує і заповнює еліптичний сектор. (X, У) - центр кола, «ХРадіус», «YPaдiyc» - горизонтальний і вертикальний радіуси. Сектор креслиться від початкового «поч_кут» до кінцевого кута «кін_кут». Сектор малюється поточним кольором і зафарбовується з використанням зразка зафарбування і кольорів, заданих за допомогою процедури SetFillStyle.

SetBkColor (колір: word) - процедура встановлює поточний колір тла.

SelColor(Koлip: word) - встановлює поточний колір малювання.

SetFillStyle( зразок : word; колір :р word)- процедура встановлює зразок і колір зафарбування для всіх типів зафарбування, виконуваних процедурами Bar,Bar3D,FillEllipse,FloodFill та PieSlice. Можна використовувати кілька типів зафарбування (наприклад, 1 - суцільне фарбування, 2 - штрихування лініями, 7 - штрихування символом «+», 11 - штрихування крапками тощо).

SetLineStyle(mun_pHdKa :word; зразок: word; товщина : word) -процедура встановлює поточну товщину і тип лінії.

SetTextJustify(ropu3, верт : word) - процедура встановлює значення вирівнювання тексту, що використовуються процедурами OutTextіOutTextXY.

SetTextStyle (шрифт: word; направл: word; розм_символу: CharSize-турі) - процедура встановлює поточний шрифт символу.

SetViewport(XI, Yl, XI, Х2 word, clip: boolean) - процедура встановлює для графічного поточного виведення чи перегляду вікно, де (X1,Y1) -верхній лівий кут області перегляду, (Х2, Y2) - нижній правий кут. Процедура переміщує поточний покажчик у точку з координатами (0,0). Clip - булівська змінна.