Тема: Програмування. Основні етапи розробки прикладних програм

Вид материалаДокументы

Содержание


Типи драйверів
Типи шрифтів
Ініціалізація графіки
Всі решта графічні установки (положення поточного вказівника, палітра, колір, параметри графічного вікна і т. д.) при ініціаліза
Побудова зображень на екрані
Робота з текстом
Управління параметрами зображення
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   14
ТЕМА: МОДУЛЬ GRAPH


Для створення графічного зображення в мові Turbo Pascal призначений стандартний бібліотечний модуль Graph. Він представляє собою бібліотеку програм, яка повністю забезпечує управління графічними режимами різних адаптерів дисплеїв: CGA, EGA, VGA, MCGA, Hercules, PC 3270, AT&T6300 і IBM 8514. Бібліотека містить близько 80 графічних констант і описаний типів даних.

Підключення модуля Graph до програми здійснюється стандартним способом, тобто за допомогою зарезервованого слова USES:

USES Graph;

Щоб запустити програму, в якій використовуються процедури модуля Graph, необхідно розташувати в робочий каталог відповідні графічні драйвери (файли з розширенням .BGI). якщо ви використовуєте штрихові шрифти, необхідно включити в цей каталог і файли шрифтів (з розширенням .CHR).

Модуль Graph представляє собою окремий файл GRAPH.TPU, який не входить в склад бібліотеки TURBO.TPL, і щоб забезпечити можливість роботи з графікою, потрібно зробити файл GRAPH.TPU доступним для комп’ютера.


ТИПИ ДРАЙВЕРІВ

В представленій нижче таблиці приведені типи графічних адаптерів і назви сумісних з ними драйверів

Драйвер

апаратне забезпечення

CGA. BGI

адаптери CGA, MCGA

EGAVGA.BGI

адаптери EGA, VGA

HERC.BGI

монохромний адаптер Hercules

ATT.BGI

AT&T 6300 (400 рядків)

PC3270.BGI

IBM 3270 PC

IBM8514.BGI

IBM 8514

Драйвери представляють собою файли з розширенням .BGI, які забезпечують взаємодію програм з графічними пристроями (згідно стандартам фірми Borland, розширення .BGI повинні мати файли графічного інтерфейсу ( Borland Graphic Interface). При ініціалізації визначеного графічного режиму підключається відповідний драйвер. Для забезпечення роботи програми в одному з графічних режимів процедура InitGraph визначає тип адаптера і завантажує відповідний BGI-файл. Процедура CloseGraph слугує для видалення графічного драйвера з пам'яті і відновлення текстового режиму роботи відеоадаптера.

При роботі з графікою в Turbo Pascal є можливість підключати не тільки стандартні, але і драйвери користувача. Останні повинні задовольняти стандарти Borland International. В модулі Graph знаходиться процедура RegisterBGIDriver, яка забезпечує підтримку роботи з драйверами користувача.


ТИПИ ШРИФТІВ

При відображенні тексту на екран дисплея в графічних режимах можуть застосовуватися найрізноманітніші шрифти – як стандартні, так і користувача. По замовчуванню після ініціалізації графічного режиму встановлюється шрифт DefaultFont. Для формування кожного символу шрифту використовується матриця розміром 8х8 бітів.

Шрифт

Файл

TriplexFont

TRIP.CHR

SmallFont

LITT.CHR

SansSerifFont

SANS.CHR

GothicFont

GOTH.CHR

Стандартний набір шрифтів включає шрифти, приведені в таблиці. Кожному шрифту відповідає файл з розширенням .CHR. активізація потрібного шрифту здійснюється спеціальною процедурою. Висота і ширина символів кожного шрифту може змінюватися за допомогою спеціальних засобів.


ІНІЦІАЛІЗАЦІЯ ГРАФІКИ


класифікація типів драйверів і відео режимів

Перед початком роботи з графікою необхідно встановити найбільш підходящий для даного монітора відеорежим. В комплект поставки Turbo Pascal входить обмежене число драйверів, кожний з яких може підтримувати один чи декілька відеорежимів. Тип драйвера і режим можуть бути задані у вигляді числа чи символьної константи.

Нижче приведений список констант для задання типу графічного адаптера. Ці константи визначенні в модулі Graph.

Detect

=0

автовизначник

CGA

=1

адаптер CGA

MCGA

=2

адаптер MCGA

EGA

=3

адаптер EGA 256K

EGA64

=4

адаптер EGA 64K

EGAMono

=5

EGA з монохромним дисплеєм

IBM8514

=6

адаптер 8514

HercMono

=7

адаптер Hercules

ATT400

=8

для ПК AT&T

VGA

=9

адаптер VGA

PC3270

=10

адаптер 3270

CurrendDriver

=-128

для GetModeRange

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

драйвер

ім'я константи режиму і її значення

розширення екрану (в точках)

палітра

число відеосторінок

CGA

CGAC0=0

CGAC1=1

CGAC2=2

CGAC3=3

CGAHi=4

320x200

320x200

320x200

320x200

640x200

4 кольори 4 кольори

4 кольори

4 кольори

2 кольори

1

1

1

1

1

MCGA

MCGAC0=0

MCGAC1=1

MCGAC2=2

MCGAC3=3

MCGAMed=4

MCGHi=5

320x200

320x200

320x200

320x200

640x200

640x480

4 кольори

4 кольори

4 кольори

4 кольори

2 кольори

2 кольори

1

1

1

1

1

1

EGA

EGALo=0

EGAHi=1

640x200

640x350

16 кольорів

16 кольорів

4

2

EGA64

EGA64Lo=0

EGAHi=1

640x200

640x350

16 кольорів

4 кольори

1

1

EGAMono

EGAMonoHi=3

640x350

2 кольори

1 (2)

HERC

HercMonoHi=0

720x348

2 кольори

2

ATT400

ATT400C0=0

ATT400C1=1

ATT4002=2

ATT400C3=3

ATT400Med=4

ATT400Hi=5

320x200

320x200

320x200

320x200

640x200

640x400

4 кольори

4 кольори

4 кольори

4 кольори

2 кольори

2 кольори

1

1

1

1

1

1

VGA

VGALo=0

VGAMed=1

VGAHi=2

640x200

640x350

640x480

16 кольорів

16 кольорів

16 кольорів

4

2

1

PC3270

PC3270Hi=0

720x350

2 кольори

1

IBM8514

IBM8514Lo=0

IBM8514Hi=1

640x480

1024x768

256 кольори

256 кольори

1

1



ініціалізація і завершення відеорежиму

Процедура ініціалізації InitGraph. Будь-яка програма, призначена для роботи з графікою, обов’язково повинна містити блок викликів процедур ініціалізації графічного режиму і звернення до процедури його завершення. В такому блоці прохолодить ініціалізація графічного режиму, перевіряється правильність ініціалізації і, якщо всі операції пройшли успішно, дозволяється подальша робота програми. Процедура ініціалізації оголошена наступним чином:

InitGraph (VAR GraphDriver: INTEGER; {тип адаптера}

VAR GraphMode: INTEGER; {режим графіки}

VAR DriverPath: STRING); {шлях до драйвера}

Змінні GraphDriver і GraphMode задають драйвер і режим у відповідності з значеннями, приведеними в попередній таблиці.

Наприклад:

GraphDriver: =EGA; GraphMode: =EGAHi;

В якості значень кожного х цих параметрів можна задати як ім'я відповідної зарезервованої константи, так і її значення; обидва параметри можна встановити до виклику процедури InitGraph.

Якщо параметр GraphDriver містить номер конкретного адаптера, то і другий параметр, GraphMode, повинен мати значення режиму, допустимого для цього адаптера. Коли GraphDriver присвоюється значення константи Detect, система переходить в режим автовизначення. Якщо можливе переключення системи в графічний режим, то проходить ініціалізація відповідного BGI-драйвера і вмикається режим з максимальним розширенням для даного типу відеоадаптера. В GraphDriver і GraphMode при цьому процедура поверне автоматично визначені значення цих параметрів чи код помилки.

Таке встановлення параметру GraphDriver рекомендується в тих випадках, коли програма повинна робити на різних комп’ютерах з різними відеоадаптерами. Але цей метод має один суттєвий недолік: оскільки під час виконання програми всі драйвери одночасно повинні знаходитися в пам'яті чи на диску, для великих програм це може привести до зменшення швидкості роботи програми.

Всі решта графічні установки (положення поточного вказівника, палітра, колір, параметри графічного вікна і т. д.) при ініціалізації приймаються по замовчуванню.

Необхідно спеціально відмітити той факт, що Turbo Pascal підтримує графічну плату IBM 8514 – графічну плату з високим розширенням, яка дозволяє отримати розширення до 1024х768 точок і палітру, яка містить 256 відтінків з 256 кольорів. Файл драйвера для цієї графічної плати називається IBM8514.BGI.

Turbo Pascal не може правильно розпізнавати графічну плату IBM 8514 в режимі автовизначення (вона буде розпізнаватися даними алгоритмами як плата VGA). Таким чином, щоб використовувати плату IBM 8514, параметру GraphDriver при виклику InitGraph потрібно присвоїти значення IBM8514 (яке визначене в модулі Graph). При роботі з платою IBM 8514 не слід використовувати з InitGraph процедуру DetectGraph чи константу Detect.

Плата AT&T 400 також розпізнається автоматично. Щоб використовувати відповідний драйвер, необхідно відмітити автовизначення і передати процедурі InitGraph попередньо встановленні значення параметрів GraphDriver і GraphMode.

Процедура CloseGraph. Коли всі дії з графікою завершені, необхідно вийти з графічного режиму. Це робиться за допомогою процедури CloseGraph, яка немає параметрів.

В процесі свого виконання ця процедура, звільняє пам’ять, яка була розділена під драйвери графіки, файли шрифтів і проміжні дані, і відновлює той режим роботи адаптера, в якому він знаходився до виконання ініціалізації системи. Наступні переключення в графічний режим можливі тільки повторної ініціалізації.


обробка помилок ініціалізації

При виконанні будь-якої програми можуть виникнути помилки, і графічні програми, в цьому аспекті нічим не відрізняються від інших. В модулі Graph реалізований механізм знаходження і генерування повідомлень про помилки за допомогою функцій GraphResult і GraphErrorMsg.

Функція

GraphResult: INTEGER;

повертає 0, якщо остання графічна операція виконалася без помилок, чи число в діапазоні від -15 до -1, якщо помилка мала місце.

Необхідно пам’ятати, що якщо функція GraphResult викликається двічі після виконанні однієї і тієї ж операції, то при повторному виклику її значення буде завжди рівне нулю, тому рекомендується зберігати значення цієї функції в якій-небудь змінній для подальшого використання, якщо це необхідно.

Для швидкої видачі простого повідомлення про тип помилки графічної системи використовується функція, яка перетворює результат виклику функції GraphResult в повідомлення, яке можна вивести на екран процедурою Write. Ця функція оголошується так:

GraphErrorMsg (Error: INTEGER): STRING;


процедури роботи з відеорежимами

Процедура DetectGraph. Для тестування графічного адаптера використовується процедура DetectGraph, яка оголошена в модулі Graph наступним чином:

DetectGraph (VAR GraphDriver, GraphMode: INTEGER);

Ця процедура може бути викликана до ініціалізації графічного режиму. Через параметр GraphDriver повертається номер драйвера з списку значень, а через параметр GraphMode – значення відповідного цьому драйверу режиму. Ці значення і рекомендується представляти в якості фактичних параметрів у процедуру InitGraph. Якщо на комп’ютері не встановлена графічна плата, то функція GraphResult буде повертати значення grNotDetected. Після визначення змінної GraphDriver автоматично стає доступним діапазон відповідних їй графічних режимів.

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

Номер поточного графічного режиму для встановлення драйвера визначається функцією

GetGraphMode: INTEGER;

а функція

GetMaxMode: WORD;

повертає номер режиму з максимальним розширенням для графічного адаптера; таким чином кожний драйвер підтримує діапазон 0..GetMaxMode. Звичайно цей же результат можна отримати з процедури:

GetModeRange (GraphDriver: INTEGER; VAR LoMode, HiMode: INTEGER);

яка через параметри LoMode і HiMode повертає, відповідно, нижню і верхню границю режимів для драйвера GraphDriver.

Функція

GetDriverName: STRING;

повертає ім'я поточного встановленого драйвера з списку констант.

переключення між текстовим і графічним режимами

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

SetGraphMode (GraphMode: INTEGER);

яка переключає систему у вказаний параметром GraphMode графічний режим і очищає екран монітору. При цьому всі додаткові характеристики встановлюються по замовчуванню. Але, щоб не виникло помилки, не слід забувати про те, що такі перевимикання можливі тільки в рамках поточного драйвера.

Процедура RestoreCRTMode. При створенні деяких пакетів, які використовують як графічні, так і текстові режими роботи комп’ютера, може бути корисна процедура RestoreCRTMode, яка повертає систему в текстовий режим, встановлений до ініціалізації графіки. Подібні дії виконує процедура CloseGraph. Однак її застосування припускає, що повернення в графічний режим повинен проводиться досить складним чином через процедуру InitGraph. Якщо ж скористатися процедурою RestoreCRTMode, то повернення в графіку буде досить простим.

Обернене переключення здійснюється за допомогою функції GetGraphMode, яка повертає номер поточного графічного режиму. При роботі RestoreCRTMode вивантаження графічного драйвера не відбувається, тобто він залишається в пам'яті. Це і є основна перевага процедури RestoreCRTMode. Слід мати на увазі, що при оберненому включені графіки всі параметри графічної системи встановлюються у вихідне положення. Крім того, при подібному переключенні відбувається очищення екрану.


ПОБУДОВА ЗОБРАЖЕНЬ НА ЕКРАНІ


система координат

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

GetMaxX: INTEGER;

GetMaxY: INTEGER;

Якщо при адресації точок вказується значення координат, яке перевищує максимальні, операція ігнорується.


управління поточним вказівником

Щоб побудувати зображення, необхідно обов’язково вказати початкову позицію. В текстових режимах цю позицію визначає положення курсору, який розміщується кожний раз за останнім відображеним символом і вказує на місцезнаходження наступного. В графічному режимі видимого курсору немає, але є невидимий поточний вказівник СР (current pointer). Який виконує ті ж функції, що і курсор в текстовому режимі.

В графічному режимі для переміщення СР використовуються процедури MoveTo і MoveRel.

Процедура

MoveTo (X, Y: INTEGER);

Переміщує поточний вказівник в точку з координатами X, Y. Процедура

MoveRel (dX, dY: INTEGER);

переміщує СР на dX точок по горизонту і на dY точок по вертикалі відносно останнього положення поточного вказівника. При задані додатних значень dX чи dY значення відповідних координат поточного вказівника будуть збільшуватися, при задані від’ємних – зменшуватися.

Для визначення поточного положення графічного курсору використовуються функції

GetX: INTEGER;

GetY: INTEGER;

які повертають значення поточних координат вказівника (абсциси і ординати відповідно).


графічні вікна

По аналогії з текстовими режимами графічний екран може бути представлений як одне велике чи декілька менших по розміру вікон. Нагадаємо, що вікно – це прямокутна область екрану, в якому реалізовані всі функції повного екрану. Після відкриття вікна весь простір екрану поза меж вікна як би „виходить з гри”, і весь ввід-вивід відбувається тільки через вікно. В кожний окремий момент може бути активне тільки одне вікно. Якщо вікон декілька, переключення вводу-виводу в потрібне вікно покладене на програміста.

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

Щоб стерти все зображення на екрані, тобто очистити його, використовується процедура ClearDevice. З моменту початку її виконання всі установки по кольору, фону і вікнам анулюються, і вказівник СР становиться в точку з координатами (0,0).

Схожі дії виконує і процедура GraphDefaults, але, крім очищення екрану, вона встановлює також ряд параметрів графічної системи:
  • Розмір графічного вікна стає рівним розміру екрану.
  • Відновлюється системна кольорова палітра.
  • Перезначаться кольори основних ліній і кольори екрану.
  • Товщина і стиль лінії встановлюються такими, як задано по замовчуванню.
  • Колір і стиль заповнення геометричних фігур і замкнутих ламаних встановлюється такими, як задано по замовчуванню.
  • Переустановлюється активний шрифт і його стиль.

Процедура GraphDefaults неявно викликається при ініціалізації графіки і виконує, по суті, всі стандартні установки графічних параметрів.

Для створення вікна слід скористатися процедурою

SetViewPort (X1, Y1, X2, Y2: INTEGER; Clip: BOOLEAN);

де X1, Y1 – координати лівого верхнього кута, X2, Y2 – координати правого нижнього кута. Параметр Clip визначає, будуть фрагменти зображення відрізатися при попаданні за межі вікна чи ні. Після створення вікна початком координат стає його верхній лівий кут, який буде мати координати (0,0).

Для очищення екрану використовується процедура SetViewPort. Після її виконання все зображення у вікні стирається, і вказівник СР встановлюється в ліву верхню точку вікна з координатами (0,0) (не слід забувати, що це координати в внутрішній системі координат, зв’язаній з даним вікном, а не в системі координат повного екрану). Перейти до системи координат повного екрану можна за допомогою процедури ClearDevice чи задавши в процедурі установки вікна максимально можливі значення.

Для визначення поточних параметрів вікна слугує процедура

GetViewSettings (VAR ViewSettings: ViewPortType);

Якщо скористатися нею зразу ж після ініціалізації графічного режиму, то виявиться, що графічним вікном являється весь екран.

Необхідно пам’ятати, що, на відмінну від текстових вікон, після виконання команди установки кольору фону SetBkColor і очищення екрану за допомогою SetViewPort фон графічного вікна буде таким, як і загальний фон екрану. Пому фон графічного вікна слід встановлювати за допомогою процедур SetFillPattern і Bar.


відображення точки на екрані

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

PUTPixel (X, Y: INTEGER; Color: WORD);

де X і Y – екрані координати точки, Color – її колір. Можливі значення Color беруться з встановленої палітри.

Визначення параметрів пікселів. Turbo Pascal дозволяє організувати прямий доступ до кожного пікселю екрану. Робить це функція

GetPixel (X, Y: INTEGER): WORD;

яка визначає номер кольору пікселю з координатами (X,Y). Звичайно номер кольору лежить в діапазоні від 0 до 15, в поверненому функцією значені значущим являється тільки молодший байт.


відображення відрізків прямих ліній

Процедура виводу відрізка прямої на екран (в поточному кольорі і стилі) визначена наступним чином:

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

В ній задаються координати початкової та кінцевої точок лінії.

Для побудови відрізків застосовуються іще дві процедури: LineTo і LineRel. Процедура LineTo(X,Y) будує відрізок з точки поточного положення вказівника то точки з координатами (X,Y). Процедура LineRel(dX, dY) проводить відрізок від поточного положення вказівника до точки (CPX+dX, CPY+dY), де CPX і CPY – поточні координати СР.

Turbo Pascal дозволяє креслити лінії найрізноманітніших стилів: тонкі, широкі, штрихові, пунктирні і т. д. Установка стилю проводиться процедурою

SetLineStyle (LineStyle: WORD; Patter: WORD; Thickness: WORD);

Параметром LineStyle задається тип рядка, Patter – шаблон, Thickness – товщина лінії.

Управління режимом відображення ліній на екран. При малюванні ліній на екрані можна назначити режим порозрядного сполучення зображень. Від нього залежить, буде чи стерта при накладанні двох точок „нижня”, і яким способом можна видалити „верхнє” зображення з екрану. Управляючи цим режимом, можна отримати складний відео ефект. Сам режим задається процедурою

SetWriteMode (Mode: INTEGER);

Аргумент Mode може приймати одне з двох значень. Якщо Mode=0, то при „ накладанні” пікселю, який належить відображеній лінії, на „попередній” даному пікселю присвоюється поточне значення кольору. Таким чином, відображена лінія буде мати заданий колір. Якщо Mode=1, то код кольору пікселів, які утворюють лінію, вираховується як результат операції виключного ЧИ над кодом поточного кольору і кодом кольору пікселю на екрані, через які проходить лінія.


побудова прямокутників

Для побудови прямокутників і паралелограмів використовуються декілька процедур. Перша з них – процедура побудови прямокутника на площині:

Rectangle (X1, Y1, X2, Y2: INTEGER);

де X1, Y1 – координати лівого верхнього кута, X2, Y2 – координати правого нижнього кута прямокутника. Це дуже корисна процедура, з її допомогою можна легко побудувати діаграму для візуального аналізу даних. Область всередині прямокутника не замальовується і співпадає з кольором фону.

Більш ефектні прямокутники можна будувати за допомогою процедури

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

Вона малює прямокутник, внутрішня область якого залита по поточному шаблону. Дана процедура звичайно використовується в діловій графіці для побудови стовпових діаграм. Параметри (X1,Y1),(X2,Y2) – координати верхнього лівого і правого нижнього кутів прямокутника. Іще більше наглядне представлення інформації під час малюванні діаграм дозволяє отримати процедура

Bar3D (X1, Y1, X2, Y2: INTEGER; D3: WORD; Top: BOOLEAN);

За її допомогою можна відобразити паралелепіпед, „лицева сторона” якого заливається по поточному шаблону, а глибина задається в пікселях параметром D3. Параметр Top задає режим верхньої площини: True – відображати, False – не відображати. Цей параметр потрібен для малювання стовпців, розташованих „один на одному”. В модулі Graph визначені дві константи для цієї процедури:

CONST

TopOn = TRUE; {верхня площина відображається}

TopOff = FALSE; {верхня площина не відображається}

побудова многокутників

многокутники можна малювати найрізноманітнішими способами, наприклад за допомогою процедур Line і LineTo. В Turbo Pascal знаходиться процедура DrawPoly, яка дозволяє будувати довільні многокутники за допомогою ліній поточного кольору, стилю і товщини. Вона має наступний синтаксис:

DrawPoly (NumPoint: WORD; VAR PolyPoint);

DrawPoly дозволяє відображати на екрані дисплея будь-яку ламану, задану сукупністю координат деякої множини точок. Це може бути як складна геометрична фігура, так і графік математичної функції, заданої в табличному вигляді. Параметр NumPoint – це кількість точок ламаної. В якості параметра PolyPoint задається змінна, тип її може бути довільним.


побудова дуг, еліпсів і кіл

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

Для зображення кола використовується процедура

Circle (X, Y: INTEGER; Radius: WORD);

Тут (X,Y) – координати центру кола, Radius – його радіус. Результатом роботи буде коло, якщо коефіцієнт стиску зображення відповідає встановленому BGI-драйвером для поточного графічного режиму. В протилежному випадку на екрані з’явиться еліпс, витягнутий по вертикалі (коли коефіцієнт стиску більший прийнятого по замовчуванню) чи по горизонталі (коли коефіцієнт стиску менший прийнятого по замовчуванню).

В ряді випадків, особливо для імітації об’ємних фігур, використовуються дуги. Їх можна накреслити за допомогою процедури

Arc (X, Y: INTEGER; StAngle; EndAngle; Radius: WORD);

де (X,Y) – центр кола дуги, StAngle і EndAngle – початковий і кінцевий кути, які відраховуються від горизонтальної осі проти часової стрілки, Radius – радіус. Очевидно, що якщо StAngle=0 і EndAngle=359, то накреслиться повне коло.

Для побудови еліптичних дуг призначена процедура

Ellipse (X, Y: INTEGER; StAngle, EndAngle: WORD; XR, YR: WORD);

де (X,Y) – центр еліпса в дисплейних координатах, XR і YR – горизонтальна і вертикальна осі. Дуга еліпса накреслюється поточним кольором від початкового кута StAngle до кінцевого кута EndAngle, так само як і в процедурі Arc.


РОБОТА З ТЕКСТОМ

Відображення тексту в графічному режимі має ряд відмінностей від текстового режиму. Основна відмінність полягає в тому, що в графічному режимі всі дії проходять тільки з рядковими константами і змінними. Всі числова інформація повинна попередньо перетворюватися в символьну. Друга відмінність – в можливості використання різних шрифтів.


відображення рядків

зображення на екрані звичайно супроводжується пояснюваним текстом. В графічних режимах для цього використовуються процедури OutText і OutTextXY. Процедура

OutText (TextString: STRING);

виводить на екран рядок тексту, починаючи з початкового положення СР. Очевидний недолік процедури а тому, що не можна вказати довільну точку початку виводу. Цей недолік можна обійти за допомогою MoveTo, але краще скористатися процедурою

OutTextXY (X, Y, Text);

де X, Y – координати точки початку виводу тексту, Text – константа чи змінна типу STRING.


відображення числової інформації

звичайно для недосвідчених користувачів відображення числової інформації на екрані представляє деякі трудності, так як в модулі Graph немає призначених для цього процедур. З цього положення можна вийти наступним чином: спочатку перетворити число в рядок за допомогою процедури Str, а потім за допомогою операцій конкатенації (+)об’єднати її з відображеною функцією OutTextXY рядком.


УПРАВЛІННЯ ПАРАМЕТРАМИ ЗОБРАЖЕННЯ


встановлення кольору

Для різних типів адаптерів кількість кольорів, одночасно відображених на екрані в графічному режимі, може бути різною. Але для всіх BGI-драйверів вона обмежена діапазоном цілочислових значень від 0 до 15.

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

GetMaxColor: WORD;

Для встановлення кольору і фону в мові Turbo Pascal застосовуються процедури SetColor і SetBkColor. Процедура

SetColor (Color: WORD);

слугує для задання кольору, який буде використовуватися процедурами графічного виводу. Номер кольору вказується параметром Color. По замовчуванню для зображення використовується колір з максимальним номером, а для фону – з мінімальним. Якщо в якості Color вказаний недоступний номер кольору, поточний колір не змінюється. Процедура

SetBkColor (Color: WORD);

встановлює новий колір фону, який визначається значенням Color.

Отримати значення поточних установок кольору можна за допомогою двох спеціальних функцій. Функція

GetColor: WORD;

повертає значення поточного кольору зображення, а функція

GetBkColor: WORD;

поточний колір фону.


встановлення палітри

Палітрою називається максимальна набір кольорів, які підтримує BGI-драйвер. Вона включає 16 кольорів, пронумерованих від 0 до 15, які використовуються по замовчуванню в режимі 320х200 для EGA як в текстовому, так і в графічному режимах.

Отримати інформацію про поточну палітру можна за допомогою процедури

GetDefaultPalette (VAR Palette: PaletteType);

де Palette – змінна типу PaletteType.