На відміну від уже знайомого текстового режиму, екран в графічному режимі розбитий на велику кількість точок, кожна з яких може мати певний колір. Точки вважаються однаковими і прямокутними, всі вони щільно «укладені» на екрані, тобто для будь-якої точки можна вказати, в якому рядку і в якому стовпці вона знаходиться. Номери рядків і стовпців в графічному режимі використовуються як координати точки, отже, координати завжди цілочисельні. У графічному режимі початок координат знаходиться в лівому верхньому кутку екрану, вісь x спрямована вправо, вісь y спрямована вниз.
Зауважимо, що існують різні графічні режими, вони відрізняються кількістю точок по горизонталі і вертикалі (дозволом), а також кількістю можливих кольорів, наприклад: 320 x 200 x 16, 640 x 480 x 16, 640 x 200 x 16, 800 x 600 x 256 і т. п.
Всі кошти для роботи з графікою міститися в стандартному модулі Graph. тому його потрібно буде згадувати після слова uses.
1. Включення і вимикання графічного режиму.
Для включення графічного режиму використовується процедура InitGraph (driver. Mode. Path) опишемо призначення її параметрів:
Зазвичай для включення графіки ми будемо використовувати InitGraph в такому вигляді:
const gpath = 'Y: \ WIN_APPS \ BP \ BGI'
var gd, gm: integer;
Для завершення роботи з графікою і виходу в текстовий режим використовується процедура CloseGraph.
2. Побудова елементарних зображень
Система координат при роботі з графікою має початок (точку (0,0)) в лівому верхньому кутку екрану. Ось x спрямована вправо, вісь y - вниз. Очевидно, що всі точки екрану мають цілочисельні координати.
При побудові найпростіших елементів зображень використовуються такі процедури і функції:
Всі наведені вище процедури для малювання виконують тільки контурні малюнки (НЕ зафарбовуючи прямокутник, коло або еліпс всередині). За замовчуванням малювання відбувається з використанням тонкої суцільної лінії, проте товщину і вид лінії можна змінювати за допомогою процедури SetLineStyle (style. Pattern. Width. Word). Розглянемо призначення параметрів цієї процедури.
1. style - вид лінії. Тут зручно задавати не конкретні числа, а константи: SolidLn. DottedLn. CenterLn. DashedLn. UserBitLn. Перша позначає суцільну лінію, наступні три - різні види переривчастих ліній, остання - лінію, вид якої визначається користувачем (див. Нижче).
2. pattern - зразок для виду лінії, що визначається користувачем. Цей параметр набуває чинності лише тоді, коли в попередньому вказано UserBitLn. Зразок - це фрагмент лінії, заданий у вигляді числа. Перехід від конкретного фрагмента до числа виконується, наприклад, так:
Найзручніше переводити отримане число в шістнадцятковий вид, в нашому прикладі вийде $ 999 C. При зображенні лінії закодований нами фрагмент буде повторюватися стільки разів, скільки потрібно.
3. width - товщина лінії. Можна використовувати числа, проте визначені 2 константи: NormWidth і ThickWidth (нормальна і товста лінії).
Перейдемо тепер до малювання зафарбованих фігур. За замовчуванням внутрішня область фігури буде зафарбовувати білим кольором, причому зафарбування буде суцільний. Для управління кольором і видом зафарбовування використовується процедура SetFillStyle (style. Color. Word); Також як і для стилю лінії, для style передбачені константи: EmptyFill, SolidFill, LineFill, LtSlashFill, SlashFill, BkSlashFill, LtBkSlashFill, HatchFill, XHatchFill, InterleaveFill, WideDotFill, CloseDotFill, UserFill. Перша позначає відсутність зафарбовування, друга - суцільну, наступні - різні специфічні види зафарбовування, найостанніша - зафарбовування, що задається користувачем. Щоб задати користувальницький зразок зафарбовування, потрібно використовувати процедуру SetFillPattern (Pattern: FillPatternType; Color: Word); FillPatternType визначається як array [1..8] of byte. кожен елемент масиву кодує одну сходинку зразка зафарбовування (як і для ліній), а всього таких рядків 8. У результаті зафарбування виконується за допомогою однакових квадратиків 8 x 8.
Нижче наводяться процедури малювання зафарбованих фігур.