на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Основні відомості про алгоритмічну мову Turbo Pascal. Графіка Pascal
p align="left">

Тип драйвера і режим можна задавати у вигляді числа або у вигляді символьної константи. Ці константи визначені у модулі GRAPH:

Таблиця 2

Detect = 0

{автовизначення}

CGA = 1;

EGAMONO = 5;

MCGA = 2;

IBM8514 = 6;

EGA = 3;

HercMONO = 7;

EGA64 = 4;

ATT 400 = 8;

VGA = 9;

PC3270 = 10.

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

Модуль GRAPH.

Модуль GRAPH підключається стандартним способом:

USES GRAPH;

Модуль GRAPH представляє собою окремий файл GRAPH.TPU і містить набір процедур і функцій.

Процедура ініціалізації графічного режиму:

InitGraph (var Driver, Mode : integer; path : string);

Змінні Driver i Mode задають драйвер і режим роботи адаптера, path - визначає можливий шлях до файлу.

Перші дві змінні задаються константами таблиці 2, іменем або числовим значенням.

Приклад 1:

Нехай драйвер EGAVGA.BGI знаходиться в каталозі TP\BGI диска С і встановлює режим VGAHI (640*480, 16 кольорів). Фрагмент використання процедури в програмі:

begin

Driver := VGA;

Mode := VGAHI;

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

end.

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

Приклад 1а:

…………………

Driver := Detect;

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

…………………

Такий параметр рекомендують використовувати при роботі на різних комп'ютерах з різними відеоадаптерами.

Особливості автовизначення типу драйвера:

а) для адаптера вибирається максимальний режим;

б) на час виконання програми всі драйвери знаходяться у пам'яті, або на диску; для великих програм це може привести до зменшення швидкості роботи програми;

в) ТР автоматично не розпізнає адаптери IBM8514 i ATT400; їх необхідно вказувати в процедурі.

Процедура завершення графічного режиму: CLOSEGRAPH;

Процедура без параметрів. В процесі її виконання звільняється пам'ять (від драйверів, файлів, шрифтів, проміжних даних), відновлюється текстовий режим роботи екрану.

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

Структура графічної Паскаль-програми.

Приклад 2:

Program GraphicDemo;

uses Graph;

var Driver, Mode : integer;

begin

Driver := Detect;

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

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

…..

CloseGraph ;

end.

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

При виконанні програми можуть виникати помилки. Тому в модулі 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.

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

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.