Здавалка
Главная | Обратная связь

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



Тема_7: Робота в графічному режимі

План.

1. Текстовий та графічний режими роботи.

2. Ініціалізація графічного режиму.

3. Бібліотека Graph.

Приклади побудови графічних зображень.

Створення ефекту руху зображення в графічному режимі.

6. Відтворення звуку.

 

Текстовий та графічний режими роботи

 

Існує два режими роботи: текстовий та графічний.

Елементом зображення у текстовому режимі є символ. Текстовий режим забезпечує, зазвичай, виведення символів на екран у 25 рядків і 80 стовпців.

Елементом зображення у графічному режимі є піксель.Пікселі можна засвічувати певним кольором чи гасити, у результаті чого на екрані утворюється деяке зображення. Кожний монітор має свою кількість пікселів на екрані. Вона характеризує якість зображення та визначається відеоадаптером (640 * 350 для EGA, 640 * 480 – для VGA).

Початок відліку координат знаходиться у лівому верхньому куті екрана. Кожна точка характеризується двома координатами: x та y, які є додатними. Схематично осі координат на екрані мають такий вигляд:

 

Ініціалізація графічного режиму

 

Для того, щоб програма змогла виводити на екран будь-які графічні зображення, необхідно ініціалізувати (активізувати) графічний режим, тобто перейти до нього з текстового режиму. Для цього використовують процедуру InitGraph (grDriver, grMode, grPath).

Перший параметр задає тип відеоадаптера (визначає драйвер відеосистеми), другий – визначає відеорежим, а третій параметр являє собою шлях до драйвера на диску (зазвичай він розташований у папці BGI). Для того, щоб комп’ютер автоматично розпізнавав відеоадаптер та відеорежим, користуються вбудованою константою Detectтаким чином: grDriver:=Detect;

Завершують роботу в графічному режимі, або ж закривають його процедурою CloseGraph.

 

Структура програми у графічному режимі:

 

Program Ім’я;

Uses Graph;

Var GrDriver, grMode, errCode: Integer;{ці змінні використовуються процедурою InitGraph}

begin{ тіло програми }

GrDriver: = Detect;{автоматичне визначення драйвера}

InitGraph (grDriver, grMode, “шлях до драйвера”);

{шлях до драйвера, наприклад: ‘С:\ТР\BGI’}

ErrCode: = GraphResult;{функція, що повертає результат ініціалізації графічного режиму}

If errCode = grOK{якщо результат успішний}

Then

Begin

{ режим відкритий і Ви можете працювати}

. . .

CloseGraph;{ закриття графічного режиму }

End

Else

Begin

{ режим не вдалося відкрити, чому ?}

Writeln ('...');

{ в цьому місці Ви повідомляєте причину невдачі, яку визначаєте в результаті аналізу змінної errorCode}

End

End.

 

Змінна ErrorCode зберігає значення, отримане функцією GraphResult, яке може бути числом в діапазоні від 0 до -14. Про безпомилкову роботу свідчить значення, рівне 0 (символьне ім’я цієї константи – grOk), решта значень указують на одну з помилок ініціалізації графічного режиму:

-1 (grNoInitGraph) – графічний режим не ініціалізувався (використовуйте InitGraph)

-2 (grNotDetected) – не знайдені графічні засоби

-3 (grFileNotFound) – не знайдений файл

-4 (grlnvalidDriver) – недоступний драйвер

-5 (grNoLoadMem) –не вистачає пам'яті для завантаження драйвера

-6 (grNoScanMem) – помилка при скануванні пам'яті

-7 (grNoFloodMem) – помилка при зафарбовуванні

-8 (grFontNotFound) – не знайдений шрифт

-9 (grNoFontMem) – шрифт не завантажено

-10 (grlnvalidMode) –недоступний режим

-11 (grError) – графічна помилка

-12 (grIOerror) – помилка графічного ведення-виведення

-13 (grlnvalidFont) – невірний файл шрифту

-14 (grlnvalidFontNum) – невірний номер шрифту.

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

 


3.Бібліотека Graph

 

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

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

Arc (x, y, кут початку, кут кінця, радіус: integer); –викреслюється дуга з центром в точці з координатами (x, y). Параметри кут початку та кут кінця задають кутові координати початкової та кінцевої точок лінії дуги, яка викреслюється проти годинникової стрілки від початкової точки до кінцевої. Кутові координати задаються в градусах. Параметр радіус задає радіус дуги.

Дуга викреслюється кольором, заданим процедурою SetColor.

Bar (x1, y1, x2, y2: integer ); – викреслює зафарбований прямокутник. Параметри x1 та y1 задають розташування лівого верхнього кута прямокутника, x2 та y2 – правого нижнього. Стиль і колір заливки задається за допомогою процедури SetFillStyle.

Bar3D (x1, y1, x2, y2: integer; глибина: word; границя: boolean); - викреслює паралелепіпед. Параметри x1 та y1 задають розташування лівого верхнього, а x2 та y2 – правого нижнього кута ближньої грані паралелепіпеда. Параметр глибина задає відстань між передньою та задньою гранями. Параметр границя визначає, чи треба викреслювати верхню границю задньої грані паралелепіпеда. Колір та стиль заливки ближньої грані паралелепіпеда можна задати за допомогою процедури SetFillStyle, колір ліній границі – процедурою SetColor.

Circle (x, y: integer; радіус: word); – викреслює коло з заданим радіусом з центром в точці з координатами (x, y). Колір лінії кола можна задати за допомогою процедури SetColor.

Ellipse (x, y, кут початку, кут кінця, радіусX, радіусY: integer); – викреслює еліпс або дугу еліпса з центром в точці з координатами (x,y). Параметри кут початку та кут кінця задають кутові координати початкової та кінцевої точок лінії еліпса, яка викреслюється проти годинникової стрілки від початкової точки до кінцевої. Кутові координати задаються в градусах. Параметри радіусX та радіусY визначають горизонтальний та вертикальний радіуси еліпса. Лінія еліпса або дуга викреслюється кольором, заданим процедурою SetColor.

GetX: integer; – функція, яка повертає координату X покажчика виведення.

GetY: integer; – функція, яка повертає координату Y покажчика виведення.

GraphResult: integer; - повертає результат (код помилки) останньої виконаної графічної операції. Якщо операція виконана успішно, функція повертає нуль.

Line (x1, y1, x2, y2: integer); – викреслює лінію між двома точками екрану, заданими координатами (x1, y1) та (x2, y2). Лінія викреслюється стилем, встановленим процедурою SetLineStyle. Колір лінії можна задати за допомогою процедури SetColor.

LineTo (x1, y1: integer); – викреслює лінію від поточного положення покажчика виводу до точки з координатами (x1, y1). Лінія викреслюється стилем, встановленим процедурою SetLineStyle. Колір лінії можна задати за допомогою процедури SetColor.

MoveTo (x, y: integer); – переміщує покажчик виведення в точку з координатами (x, y).

MoveRel (dx, dy: integer); – переміщує покажчик виведення на dx та dy пікселів. Якщо значення параметра dx (dy) додатне, то покажчик переміщується вниз (ліворуч), якщо від’ємне, то – вгору (праворуч).

OutText (текст: string); – виводить символьний рядок текст від поточного положення покажчика виведення і переміщує покажчик виведення в точку, розташовану за останнім виведеним символом. Колір символів можна задати за допомогою процедури SetColor, а шрифт – SetTextStyle.

OutTextXY (x, y: integer; текст: string); – встановлює покажчик виведення в точку з координатами (x, y) і виводить рядок символів текст, при цьому покажчик виведення не змінює свого положення, він залишається в точці з координатами (x, y). Колір символів можна задати за допомогою процедури SetColor, а шрифт – SetTextStyle.

PieSlice (x, y, кут початку, кут кінця, радіус: integer); – викреслює сектор з радіусом радіус з центром в точці з координатами (x, y). Параметри кут початку та кут кінця задають кутові координати початкової та кінцевої точок лінії еліпса, яка викреслюється проти годинникової стрілки від початкової точки до кінцевої. Кутові координати задаються в градусах. Стиль і колір заливки сектора задається за допомогою процедури SetFillStyle, колір лінії та границь сектора задається за допомогою процедури SetColor.

PutPixel (x, y, колір: integer); – забарвлює піксель, точку з координатами (x, y), кольором колір.

Rectangle (x1, y1, x2, y2: integer); – викреслює прямокутник. Параметри x1 та y1 задають розташування лівого верхнього кута прямокутника, x2 та y2 – правого нижнього. Вид контуру прямокутника можна задати за допомогою процедури SetLineStyle,а колір – за допомогою процедури SetColor.

Sector (x, y, кут1, кут2, радіусХ, радіусY: integer ); –викреслює еліптичний або коловий сектор. Параметри x та y задають положення центра сектора, кут1 та кут2 – кути прямих, які обмежують сектор, а радіус Х і радіусY – радіуси еліпса по осям Х та Y. Стиль і колір заливки сектора задається за допомогою процедури SetFillStyle, колір границь сектора задається за допомогою процедури SetColor.

SetColor (колір: word); – задає колір для виведення тексту (процедури OutText та OutTextXY), викреслювання ліній та фігур (процедури Line, LineTo, Circle, Ellipse, Rectangle та інші). В якості параметра колір зазвичай використовують іменовані константи.

Колір Константа Значення константи
Чорний Black
Синій Blue
Зелений Green
Бірюзовий Cyan
Червоний Red
Бузковий Magenta
Коричневий Brown
Білий LightGray
Сірий DarkGray
Блакитний LightBlue
Світло-зелений LightGreen
Світло-бірюзовий LightCyan
Світло-червоний LightRed
Світло-бузковий LightMagenta
Жовтий Yellow
Яскраво-білий White

 

SetFillStyle (стиль, колір: word); – встановлює стиль та колір заливки для викреслювання областей (процедури Bar, Bar3D, Sector, PieSlice та інші). В якості параметра стиль зазвичай використовують іменовані константи.

 

Константа Стиль заповнення області
EmptyFill Без заливки (суцільна заливка кольором фону)
SolidFill Суцільна заливка поточним кольором
LineFill Горизонтальне штрихування
LtSlashFill Штрихування під кутом 45º вліво тонкими лініями
SlashFill Штрихування під кутом 45 º вліво
BkSlashFill Штрихування під кутом 45º вправо тонкими лініями
LtBkSlashFill Штрихування під кутом 45º вправо
HatchFill Штрихування кліткою
XhatchFill Штрихування під кутом 45 º рідкою косою кліткою
InterleaveFill Штрихування під кутом 45 º частою косою кліткою
WideDotFill Заповнення рідкими точками
CloseDotFill Заповнення частими точками
UserFill Тип заповнення визначається програмістом

 

SetLineStyle (тип лінії, товщина: word); – встановлює стиль контурів та ліній (процедури Line, LineTo, Sircle, Ellipse та інші). Параметр тип лінії, в якості якого зазвичай використовують іменовані константи, визначає вид лінії. Параметр товщина визначає товщину лінії. Лінія може бути звичайної товщини (константа NormWidth) або потовщена (константа ThickWidth)

 

Константа Тип лінії
SolidLn Суцільна, неперервна
DottedLn Пунктирна, з постійною довжиною штрихів
CenterLn Штрих-пунктирна лінія
DashedLn Пунктирна з довжиною штрихів трохи більшою, ніж у лінії типу DottedLn

 

SetTextStyle (шрифт, орієнтація, розмір: word); –встановлює шрифт, розмір та орієнтацію тексту, який виводиться процедурами OutTextXY та OutText. В якості параметра шрифт зазвичай використовують іменовані константи. Параметр орієнтація задає орієнтацію тексту. Текст може бути орієнтований звичайним чином (константа Normal) або вертикально, тобто знизу догори (константа Vertical).

Константа Значення Шрифт
DefaultFont Стандартний. Кожен символ формується в квадраті розміром 8х8 пікселів
TriplexFont Triplex шрифт
SmallFont Мілкий
SansSerifFont SansSerif шрифт
GothicFont Готичний

 


 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.