Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OT_METOD_KP_ONOEOT

.pdf
Скачиваний:
18
Добавлен:
12.05.2015
Размер:
845.28 Кб
Скачать

Таким чином, відображена лінія буде мати заданий колір. Якщо 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 – не відображати. Цей параметр потрібен для малювання

110

стовпців, розташованих „один на одному”. В модулі 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-драйвером для поточного графічного режиму. В протилежному випадку на екрані з’явиться еліпс, витягнутий по вертикалі (коли коефіцієнт стиску більший прийнятого по замовчуванню) чи по горизонталі (коли коефіцієнт стиску менший прийнятого по замовчуванню).

111

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

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);

112

де 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.

113

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

GetColor: WORD;

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

GetBkColor: WORD;

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

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

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

GetDefaultPalette (VAR Palette: PaletteType);

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

Контрольні питання

1.Функціональні групи функцій і процедур модуля GRAPH.

2.Відкриття і закриття графічного режиму.

3.Як відбувається очищення екрана, управління графічними режимами і управління курсором?

4.Які функції використовуються для малювання графічних примітивів і фігур?

5.Як відбувається управління кольорами і шаблонами заповнення?

6.Бітові операції.

7.Що таке графічне вікно?

8.Управління виведенням тексту.

114

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]