Відображення на екрані дисплея графічної інформації
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
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. Група процедур та функцій управління режимами роботи графічного адаптера
- процедура DetectGraph виконується для тестування графічного адаптера:
DetectGraph (var Driver, Mode : integer);
Ця процедура може бути викликана до ініціалізації графічного режиму. Параметри:
Driver повертає тип драйвера;
Mode - повертає максимальне значення відповідного режиму.
Ці значення і рекомендується підставляти як фактичні параметри процедури InitGraph.
- група процедур та функцій управління режимами роботи графічного адаптера:
а) функція GetGraphMode : integer повертає код установленого режиму роботи графічного адаптера.
б) функція GetMaxMod : integer; повертає максимальний номер коду режиму графічного адаптеру;
в) функція GetModName (ModNum : integer) : string; повертає значення типу STRING, яке містить імя режиму роботи за його номером;
г) функція GetDriveName : string; повертає імя поточного графічного драйвера;
д) процедура GetModeRange (Driver : integer; var LoMode, HyMode : integer); повертає діапазон можливих режимів роботи заданого графічного драйвера:
Driver тип адаптера;
LoMode мінімальне значення коду режиму адаптера;
HiMode - мінімальне значення коду режиму адаптера.
!Особливість!:
- якщо значення Drive задано невірно, то змінні отримують значення 1;
- перед звертанням до процедури можна не встановлювати графічний режим.
- процедур установки текстового та графічного режимів:
а) 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.
Особливості: якщо при адресації точок вказуються значення координат, які перевищують максимальні, то операція ігнорується.
Побудова графічного зображ