Відображення на екрані дисплея графічної інформації

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

sp;

Приклад 2:

 

Program GraphicDemo;

Uses Graph;

Var Driver, Mode : integer;

Begin

Driver := Detect;

InitGraph (Driver, Mode, C:\TP\BGI);

{графічні дії}

…..

CloseGraph ;

End.

4. Помилки ініціалізації графічного режиму та їх обробка

 

При виконанні програми можуть виникати помилки. Тому в модулі GRAPH реалізований механізм визначення помилок та видачі повідомлень про них на екран за допомогою функції GraphResult i GraphErrorMsg.

Функція GraphResult : integer; повертає 0, якщо остання графічна операція виконалась без помилок, або число від 14..-1, при наявності помилок.

Функція GraphErrorMsg (Code : integer) : string; повертає значення типу STRING в якому відповідно коду помилки надається текстову повідомлення. CODE код помилки, який повертається функцією GraphResult.

Приклад 3:

 

Var

Driver, Mode, Error : string;

Begin

Driver := Detect;

InitGraph (Driver, Mode, );

Error := GraphResult;

If Error <> 0 then

WriteLn (GraphErrorMsg (Error));

……………. {повідомлення помилки}

CloseGraph;

End.

 

5. Група процедур та функцій управління режимами роботи графічного адаптера

 

  1. процедура DetectGraph виконується для тестування графічного адаптера:

 

DetectGraph (var Driver, Mode : integer);

 

Ця процедура може бути викликана до ініціалізації графічного режиму. Параметри:

Driver повертає тип драйвера;

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

Ці значення і рекомендується підставляти як фактичні параметри процедури InitGraph.

  1. група процедур та функцій управління режимами роботи графічного адаптера:

а) функція GetGraphMode : integer повертає код установленого режиму роботи графічного адаптера.

б) функція GetMaxMod : integer; повертає максимальний номер коду режиму графічного адаптеру;

в) функція GetModName (ModNum : integer) : string; повертає значення типу STRING, яке містить імя режиму роботи за його номером;

г) функція GetDriveName : string; повертає імя поточного графічного драйвера;

д) процедура GetModeRange (Driver : integer; var LoMode, HyMode : integer); повертає діапазон можливих режимів роботи заданого графічного драйвера:

Driver тип адаптера;

LoMode мінімальне значення коду режиму адаптера;

HiMode - мінімальне значення коду режиму адаптера.

!Особливість!:

  1. якщо значення Drive задано невірно, то змінні отримують значення 1;
  2. перед звертанням до процедури можна не встановлювати графічний режим.
  3. процедур установки текстового та графічного режимів:

а) RestorCRTMode; повертає до текстового режиму.

!Особливість!: навідміну від CloseGraph графічний драйвер залишається у памяті, а також залишаються установленими графічного режиму.

б) процедура SetGraphMode (Mode : integer); установлює графічний режим за вказаним кодом Mode.

!Осбливість!: для повернення до попереднього графічного режиму на місце параметра мінімальне значення коду режиму адаптера Mode можна вставити функцію GetGraphMode.

Розглянемо приклади використання процедур роботи з відеорежимами.

Приклад 4:

Перехід з графічного режиму до текстового і знову до графічного.

 

Uses Graph;

Var Driver, Mode, Error : integer;

Begin

Driver := Detect;

InitGraph (Driver, Mode, );

Error GraphResult;

If Error <> 0 then

WriteLn (GraphErrarMsg (Error))

Else

Begin

WriteLn (Це графічний режим);

ReadLn;

ResultCRTMode;

WriteLn (Це текстовий режим);

`ReadLn;

SetGraphMode (GetGraphMode);

WriteLn (Знову графічний режим);

ReadLn;

CloseGraph;

End;

End.

 

Приклад 5:

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

 

Uses GRAPH;

Var

a, b : integer;

begin

a := Detect;

InitGraph (a, b, );

WriteLn (GetDriveName);

For a := 0 to GetMaxMode do

WriteLn (GetModeName (a) : 10);

ReadLn;

CloseGraph;

End;

 

Приклад 6:

Вивести на екран назви всіх адаптерів і діапазон можливих номерів режимів їх роботи.

 

Uses Graph;

Var

D, L, H : integer;

Const

N : array [1..11] of string [8] =

(CGA, MCGA, EGA;

EGA64, EGAMONO, IBM8514;

HercMONO, ATT400, VGA;

PC3270, Помилка);

begin

writeLn ( адаптер Мин. Макс.);

for D :=1 to 11 do

begin

GetModeRange (D, L, H);

WriteLn (N [D], L : 7, H : 10);

End;

End.

 

Таким чином:

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

б) для ініціалізації графічного режиму використовують процедура InitGraph;

в) завершує графічний режим процедура CloseGraph;

г) структура графічної Паскаль-програми практично не відрізняється від стандартної структури;

д) модуль GRAPH містить широкий набір процедур та функцій роботи з відеорежимами.

 

6. Побудови графічних обєктів

 

Побудова геометричних фігур

Для побудови зображення у графічному режимі використовують систему координат, яка відрізняється від текстового режиму (екран представляється у вигляді прямокутного масиву символів і координати Х, У починаються з 1 …max значення).

Відлік координат починається з верхнього лівого кута екрана з координатами (0, 0). При цьому екран представляється у вигляді прямокутного масиву адресуємих точок (пікселів). Для різних типів адаптерів та режимів кількість точок по вертикалі та горизонталі суттєво відрізняється.

Для визначення максимальних значень координат екрану, в модулі GRAPH використовують функції:

 

GetMax X : integer;

GetMax Y : integer.

 

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

Побудова графічного зображ