Обробка помилок ініціалізації 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обробка помилок ініціалізації



При виконанні будь-якої програми можуть виникнути помилки, і графічні програми, в цьому аспекті нічим не відрізняються від інших. В модулі Graph реалізований механізм знаходження і генерування повідомлень про помилки за допомогою функцій GraphResult і GraphErrorMsg.

Функція

GraphResult: INTEGER;

Повертає 0, якщо остання графічна операція виконалася без помилок, чи число в діапазоні від -15 до -1, якщо помилка мала місце.

Необхідно пам’ятати, що якщо функція GraphResult викликається двічі після виконанні однієї і тієї ж операції, то при повторному виклику її значення буде завжди рівне нулю, тому рекомендується зберігати значення цієї функції в якій-небудь змінній для подальшого використання, якщо це необхідно.

Для швидкої видачі простого повідомлення про тип помилки графічної системи використовується функція, яка перетворює результат виклику функції GraphResult в повідомлення, яке можна вивести на екран процедурою Write. Ця функція оголошується так:

GraphErrorMsg (Error: INTEGER): STRING;

Процедури роботи з відеорежимами

Процедура DetectGraph. Для тестування графічного адаптера використовується процедура DetectGraph, яка оголошена в модулі Graph наступним чином:

DetectGraph (VAR GraphDriver, GraphMode: INTEGER);

Ця процедура може бути викликана до ініціалізації графічного режиму. Через параметр GraphDriver повертається номер драйвера з списку значень, а через параметр GraphMode – значення відповідного цьому драйверу режиму. Ці значення і рекомендується представляти в якості фактичних параметрів у процедуру InitGraph. Якщо на комп’ютері не встановлена графічна плата, то функція GraphResult буде повертати значення grNotDetected. Після визначення змінної GraphDriver автоматично стає доступним діапазон відповідних їй графічних режимів.

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

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

GetGraphMode: INTEGER;

А функція

GetMaxMode: WORD;

повертає номер режиму з максимальним розширенням для графічного адаптера; таким чином кожний драйвер підтримує діапазон 0..GetMaxMode. Звичайно цей же результат можна отримати з процедури:

GetModeRange (GraphDriver: INTEGER; VAR LoMode, HiMode: INTEGER);

Яка через параметри LoMode і HiMode повертає, відповідно, нижню і верхню границю режимів для драйвера GraphDriver.

Функція

GetDriverName: STRING;

Повертає ім'я поточного встановленого драйвера з списку констант.

переключення між текстовим і графічним режимами

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

SetGraphMode (GraphMode: INTEGER);

Яка переключає систему у вказаний параметром GraphMode графічний режим і очищає екран монітору. При цьому всі додаткові характеристики встановлюються по замовчуванню. Але, щоб не виникло помилки, не слід забувати про те, що такі перевимикання можливі тільки в рамках поточного драйвера.

Процедура RestoreCRTMode. При створенні деяких пакетів, які використовують як графічні, так і текстові режими роботи комп’ютера, може бути корисна процедура RestoreCRTMode, яка повертає систему в текстовий режим, встановлений до ініціалізації графіки. Подібні дії виконує процедура CloseGraph. Однак її застосування припускає, що повернення в графічний режим повинен проводиться досить складним чином через процедуру InitGraph. Якщо ж скористатися процедурою RestoreCRTMode, то повернення в графіку буде досить простим.

Обернене переключення здійснюється за допомогою функції GetGraphMode, яка повертає номер поточного графічного режиму. При роботі RestoreCRTMode вивантаження графічного драйвера не відбувається, тобто він залишається в пам'яті. Це і є основна перевага процедури RestoreCRTMode. Слід мати на увазі, що при оберненому включені графіки всі параметри графічної системи встановлюються у вихідне положення. Крім того, при подібному переключенні відбувається очищення екрану.

ПОБУДОВА ЗОБРАЖЕНЬ НА ЕКРАНІ

Система координат

Для побудови зображень на екрані в графічному режимі застосовується система координат, дещо відрізняється від використовуваної в текстовому режимі. Відлік починається від верхнього лівого кута екрану, який має координати (0,0). Значення Х (стовпець) збільшується в напрямку зліва на право, значення Y (рядок) – в напрямку зверху вниз. При цьому екран представляється у вигляді прямокутного масиву адресних точок, а не символів, як в текстовому режимі. Для різних типів адаптерів і режимів значення кількості точок по вертикалі і горизонталі можуть досить відрізняються. Визначення значення максимальних координат екрану в модулі Graph реалізовано за допомогою функцій

GetMaxX: INTEGER;

GetMaxY: INTEGER;

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

Управління поточним вказівником

Щоб побудувати зображення, необхідно обов’язково вказати початкову позицію. В текстових режимах цю позицію визначає положення курсору, який розміщується кожний раз за останнім відображеним символом і вказує на місцезнаходження наступного. В графічному режимі видимого курсору немає, але є невидимий поточний вказівник СР (current pointer). Який виконує ті ж функції, що і курсор в текстовому режимі.

В графічному режимі для переміщення СР використовуються процедури MoveTo і MoveRel.

Процедура

MoveTo (X, Y: INTEGER);

Переміщує поточний вказівник в точку з координатами X, Y. Процедура

MoveRel (dX, dY: INTEGER);

Переміщує СР на dX точок по горизонту і на dY точок по вертикалі відносно останнього положення поточного вказівника. При задані додатних значень dX чи dY значення відповідних координат поточного вказівника будуть збільшуватися, при задані від’ємних – зменшуватися.

Для визначення поточного положення графічного курсору використовуються функції

GetX: INTEGER;

GetY: INTEGER;

Які повертають значення поточних координат вказівника (абсциси і ординати відповідно).

Графічні вікна

По аналогії з текстовими режимами графічний екран може бути представлений як одне велике чи декілька менших по розміру вікон. Нагадаємо, що вікно – це прямокутна область екрану, в якому реалізовані всі функції повного екрану. Після відкриття вікна весь простір екрану поза меж вікна як би „виходить з гри”, і весь ввід-вивід відбувається тільки через вікно. В кожний окремий момент може бути активне тільки одне вікно. Якщо вікон декілька, переключення вводу-виводу в потрібне вікно покладене на програміста.

По замовчуванню вікно займає весь екран, значення координат його лівого верхнього і правого нижнього вікна встановлюється автоматично процедурою ініціалізації InitGraph.

Щоб стерти все зображення на екрані, тобто очистити його, використовується процедура ClearDevice. З моменту початку її виконання всі установки по кольору, фону і вікнам анулюються, і вказівник СР становиться в точку з координатами (0,0).

Схожі дії виконує і процедура GraphDefaults, але, крім очищення екрану, вона встановлює також ряд параметрів графічної системи:

ü Розмір графічного вікна стає рівним розміру екрану.

ü Відновлюється системна кольорова палітра.

ü Перезначаться кольори основних ліній і кольори екрану.

ü Товщина і стиль лінії встановлюються такими, як задано по замовчуванню.

ü Колір і стиль заповнення геометричних фігур і замкнутих ламаних встановлюється такими, як задано по замовчуванню.

ü Переустановлюється активний шрифт і його стиль.

Процедура GraphDefaults неявно викликається при ініціалізації графіки і виконує, по суті, всі стандартні установки графічних параметрів.

Для створення вікна слід скористатися процедурою

SetViewPort (X1, Y1, X2, Y2: INTEGER; Clip: BOOLEAN);

Де X1, Y1 – координати лівого верхнього кута, X2, Y2 – координати правого нижнього кута. Параметр Clip визначає, будуть фрагменти зображення відрізатися при попаданні за межі вікна чи ні. Після створення вікна початком координат стає його верхній лівий кут, який буде мати координати (0,0).

Для очищення екрану використовується процедура SetViewPort. Після її виконання все зображення у вікні стирається, і вказівник СР встановлюється в ліву верхню точку вікна з координатами (0,0) (не слід забувати, що це координати в внутрішній системі координат, зв’язаній з даним вікном, а не в системі координат повного екрану). Перейти до системи координат повного екрану можна за допомогою процедури ClearDevice чи задавши в процедурі установки вікна максимально можливі значення.



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 295; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.120.204 (0.014 с.)