это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Житомирський Військовий Інститут
Національного Авіаційного Уніврситету
Відображення на екрані дисплея графічної інформації
Житомир 2010
План
1. Графічний режим роботи дисплейних адаптерів. Типи драйверів
2. Модуль GRAPH. Ініціалізація і завершення графічного режиму
3. Структура графічної Паскаль-програми
4. Помилки ініціалізації графічного режиму та їх обробка
5. Процедури та функції роботи з відеорежимами
6. Побудови графічних об’єктів
1.Графічні режими роботи дисплейних адаптерів. Типи драйверів
Починаючи з версії 4.0 у склад ТР входить бібліотека графічних підпрограм (модуль GRAPH).,яке забезпечує керування режимами різних адаптерів дисплеїв; вона містить 80 графічних процедур та функцій а також стандартних констант і описів типів даних.Стандартний стан ПК після його вимикання, а також до запуску Паскаль-програм відповідає роботі режиму у текстовому режимі. Для виконання графічних засобів потрібно ініціалізувати графічний режим режим роботи дисплейного адаптера. Настройка графічних процедур на роботу з графічним адаптером досягається шляхом підключення відповідного графічного драйвера. Таким чином графічний драйвер керує графічним адаптером в графічному режимі роботи.
Основні характеристики моніторів та адаптерів:
- розмір екрану по діагоналі (9, 14, 15, 17, 20, 21 дюйм);
- розмір мінімального елементу зображення (0,25..,28 мм). Для кольорових – моніторна група – 3 зерна;
- роздільна здібність – це кількість точок (пікселів) по горизонталі та вертикалі;
- об’єм відеопам’яті (16 Кб – 1 Мб).
Графічні можливості адаптерів визначаються загальною кількістю пікселів (роздільна здібність) та кількістю кольорів (відтінків) кожного пікселя.
Крім того деякі графічні адаптери мають можливість працювати з декількома графічними сторінками – це область ОЗП, яка використовується для створення "карти" екрана (тобто інформація про світимість кожного пікселя).
Графічні драйвери
Представляють собою файли з розширенням .BGI, які забезпечують взаємодію програм з графічними пристроями і містяться в окремому каталозі (BGI). {*BGI – BorlandGraphicsInterface – графічний шнтерфейс фірми Borland}. В процесі ініціалізації визначеного графічного режиму вмикається відповідний драйвер.
В таблиці 1 приведені приклади графічних адаптерів та драйверів:
Таблиця 1
| Драйвер | Апаратне забезпечення |
| CGA.BGI | АдаптериCGA, MCGA |
| EGAVGA.BGI | Адаптери EGA, VGA |
| HERC.BGI | Адаптер Hercules |
| ATT.BGI | AT&T 6300 (400 рядків) |
| PC3270.BGI | IBM 3270 PC |
| IBM8514.BGI | IBM 8514 |
В комплект поставки ТР входить обмежена кількість драйверів, який може підтримувати один, або декілька відеорежимів. Тип драйвера і режим можна задавати у вигляді числа або у вигляді символьної константи. Ці константи визначені у модулі 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 константи типів драйверів та режими використовують як параметри процедур керування графічними режимами.
2. МодульGRAPH.Ініціалізація і завершення графічного режиму
Як відмічено на початку лекції, для створення графічних зображень в мові ТР призначений спеціальний стандартний бібліотечний модульGRAPH, який підключається стандартним способом:USESGRAPH;
Модуль GRAPHпредставляє собою окремий файл GRAPH.TPU і містить набір процедур і функцій.
1) Процедура ініціалізації графічного режиму:
InitGraph (var Driver, Mode : integer; path : string);
Змінні Driver i Mode задають драйвер і режим роботи адаптера, path – визначає ім’я файлу драйвера і можливий шлях до файлу.
Перші дві змінні задаються константами таблиці 2, іменем або числовим значенням.
Приклад 1:
Нехай драйвер EGAVGA.BGI знаходиться в каталозі TPBGIдиска С і встановлює режим VGAHI (640*480, 16 кольорів). Фрагмент використання процедури в програмі:
Begin
…
Driver := VGA;
Mode := VGAHI;
InitGraph (Driver, Mode, ‘C:TPBGI’);
…
end.
Якщо тип адаптера не відомий, або якщо програма розрахована на роботу з будь-яким адаптером, використовується звертання до процедури з параметром автоматичного визначення типу драйверу.
Приклад 1а:
Driver := Detect;
InitGraph (Driver, Mode, ‘C:TPBGI’);
Такий параметр рекомендують використовувати при роботі на різних комп’ютерах з різними відеоадаптерами.
Особливості автовизначення типу драйвера:
а) для адаптера вибирається максимальний режим;
б) на час виконання програми всі драйвери знаходяться у пам’яті, або на диску; для великих програм це може привести до зменшення швидкості роботи програми;
в) ТР автоматично не розпізнає адаптери IBM8514 iATT400; їх необхідно вказувати в процедурі.
2) Процедура завершення графічного режиму:CLOSEGRAPH;
Процедура без параметрів. В процесі її виконання звільняється пам’ять (від драйверів, файлів, шрифтів, проміжних даних), відновлюється текстовий режим роботи екрану.
Наступний перехід до графічного режиму виконується тільки шляхом повторної ініціалізації.
3. Структура графічної Паскаль-програми
Приклад 2:
Program GraphicDemo;
Uses Graph;
Var Driver, Mode : integer;
Begin
Driver := Detect;
InitGraph (Driver, Mode, ‘C:TPBGI’);
{графічні дії}
…..
CloseGraph ;
End.
4. Помилки ініціалізації графічного режиму та їх обробка
При виконанні програми можуть виникати помилки. Тому в модуліGRAPH реалізований механізм визначення помилок та видачі повідомлень про них на екран за допомогою функції GraphResultiGraphErrorMsg.
Функція 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.
2) група процедур та функцій управління режимами роботи графічного адаптера:
а) функція GetGraphMode : integer повертає код установленого режиму роботи графічного адаптера.
б) функція GetMaxMod : integer; повертає максимальний номер коду режиму графічного адаптеру;
в) функція GetModName (ModNum : integer) : string; повертає значення типу STRING, яке містить ім’я режиму роботи за його номером;
г) функція GetDriveName : string; повертає ім’я поточного графічного драйвера;
д) процедура GetModeRange (Driver : integer; varLoMode, HyMode : integer); повертає діапазон можливих режимів роботи заданого графічного драйвера:
Driver – тип адаптера;
LoMode – мінімальне значення коду режиму адаптера;
HiMode - мінімальне значення коду режиму адаптера.
!Особливість!:
- якщо значення Drive задано невірно, то змінні отримують значення –1;
- перед звертанням до процедури можна не встановлювати графічний режим.
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.
Особливості: якщо при адресації точок вказуються значення координат, які перевищують максимальні, то операція ігнорується.
Побудова графічного зображення починається з позначення початкової позиції. У текстовому режимі цю позицію позначає курсор, який розміщується за останнім символом і вказує на місце наступного символу. В графічних режимах відображаємого на екрані курсору не має, але є скритий поточний показчик СР (currentpointer), який виконує аналогічні функції курсору текстового режиму.
В графічному режимі для переміщення СР використовують процедури:
1) MoveTo (x, y : integer) – переміщує поточний показчик СР в точку з координатами x, y;
2) MoveRel (dx, dy:integer) – переміщує СР на dx точок по горизонталі і на dy точок по вертикалі відносно останнього положення поточного показчика. Якщо dx, dy більше 0, то координати СР збільшуються; якщо менше 0 - зменшуються.
Для визначення поточного розташування графічного курсору СР використовують функції:
GET X : integer;
GET Y : integer;
які повертають значення поточних координат показчика.
Приклад 1: позиціонування графічного курсору та визначення його координат:
Uses GRAPH;
Var Driver, Mode : integer;
Begin
Driver := Detect;
InitGraph (Drive, Mode, ‘’);
If GraphResult <> 0 then
Begin
WriteLn (‘ошибка’);
Halt (1);
End;
Move To (GetMax X div 2, GetMax Y div);
OutTextXY (GET X, GET Y, ‘курсор по центру’);
MoveRel (-GET X div 2, -GET Y div 2);
OutTextXY (‘курсор переміщений’);
ReadLn;
CloseGraph;
End.
Установка кольору та стилю
1) процедура SetColor (Color : word); встановлює поточний колір для ліній та символів. Параметр Color позначає номер кольору від 0 до 15:
Таблиця 1
| Black = 0 | Light Gray = 7 |
| Blue = 1 | Darc Gray = 8 |
| Green 2 | Light Blue = 9 |
| Cyan =3 | Light Green = 10 |
| Red = 4 | Light Cyan = 11 |
| Magente = 5 | Light Red = 12 |
| Brown = 6 | Light Magente = 13 Yellow = 14 White = 15 Blink = 128 |
2)процедура SetBKColor (Color : word); встановлює колір фону, який визначається параметром Color.
3) процедура SetFillStyle(Fill, Color : word); встановлює стиль (тип і колір) заповнення фрагментів зображення.
Геометричні побудови.
1) Відображення точки:
В модулі Graph для відображення точки використовують процедуру:
PutPixel (x, y : integer);
x, y– координата точки;
Color – її колір (значення беруть зі встановленої палітри).
2) Відображення ліній:
а)Процедура:
Line (x1, y1, x2, y2 : integer);
x1, y1, x2, y2- координати початкової і кінцевої точок лінії. Лінія креслиться поточним стилем і поточним кольором.
б) процедура: LineTo (x, y : integer); будує лінію від точки поточного розміщення показчика до точки зкоординатами (x,y).
в) процедура:LineRel (dx, dy : integer); проводить відрізок від точки поточного розміщення на величину заданого приросту.
г) процедура:SetLineStyle (Type, Pattern, Thich : word); встановлює стиль відображення ліній, де параметри – це відповідно тип, шаблон і товщина лінії. Тип лінії задається константою з таблиці 3:
Таблиця 3
| Const | Значення | Характеристика |
| SolidLn | 0 | Безперервна |
| PottedLn | 1 | Пунктирна |
| CenterLn | 2 | Штрих-пунктирна |
| DashedLn | 3 | Штрихова |
| UserBitLn | 4 | Задана |
Параметр Pattern тільки для ліній типу UserBitLn і може приймати значення від 1..65536, тобто 2 байта кожен біт (із 16 біт слова) може приймати значення 0 або 1 (піксель не світиться або світиться).
Таким чином параметр Pattern задає відрізок ліній, довжиною 16 пікселів.
Цей шаблон періодично повторюється по всій довжині ліній.
Параметр Thich приймає 2 значення:
NormWidth = 1
ThickWidTh = 3
Побудова прямокутників та паралелепіпедів
1) Процедура Rectangle (x1, y1, x2, y2 : integer); створює прямокутник з координатами x1, y1 – лівого верхнього кута і x2, y2 – правого нижнього кута. Область середини прямокутника незафарбована і співпадає з кольором фону екрану. Для ліній прямокутника використовується поточний стиль ліній і колір (заданий).
2) Процедура Bar (x1, y1, x2, y2 : integer); утворює прямокутник, внутрішня область якого заповнюється поточним стилем (тип і колір). Параметри процедури – відповідні координати лівого верхнього та правого нижнього кутів. Використовують для побудови гістограм, діаграм і т.п.
3) Процедура Bar3D (x1, y1, x2, y2 : integer; D3 : word; Top : boolean); відображає паралелепіпед (трьохмірне зображення) і зафарбовує його передню грань поточним стилем. X1..Y2 – координати лівого верхнього та правого нижнього кута передньої грані; D3 – трьохмірне зображення "глибина" у пікселях; Top – задає режим відображення верхньої грані. В модуліGRAPH для режиму Top визначені 2 константи:
TopOn = TRUE – верхня грань відображається;
TopOff = FALSE – верхня грань не відображається.
Будова многокутників.
Многокутники можна зображати декількома способами: наприклад, за допомогою процедур Line, LineTo.
Паскаль також містить процедури, які дозволяють будь-які многокутники.
1) процедура DrowPoly (n : word; varpoints); створює многокутник за допомогою ліній поточного кольору, стиля і товщини. Параметр n – кількість точок ламаної; points – змінна типу PointType, яка містить координати x, yточок ламаної.
В модуліGRAPH передбачений такий тип:
Type
PoinType = RECORD
x, y : integer;
end;
2) процедура FillPoly (n : word; var points); схожа з попередньою, але навідміну від неї – малює замкнутий многокутник і зафарбовує його. Стиль і колір лінії і контура задається процедурами SetLineStyleiSetColor, тип і колір заповнення – процедурою SetFillStyle.
3) Процедура FloodFill (x, y : integer; Border : word); служить для заповнення заданим стилем (SetFillStyle) області в середині або зовні замкненого контуру. Параметри: x, y – координати точки в середині або зовні контура; Border – задає колір контуру. Якщо контур незамкнений то буде заповнення всього екрану заданим стилем.
Побудова кола, дуги та еліпсу.
1) процедура Circle (x, y : integer; r : word); зображає коло поточного кольору, товщини і вид лінії. Параметри x, y – координати центру кола, r– радіус у пікселях.
2) Процедура Arc (x, y : integer; StAngle, EndAngle, r : word); креслить дугу кола. Задається координатами центру кола, початковим та кінцевим кутами ( у градусах), які відраховуються від горизонтальної вісі проти часової стрілки; радіус кола у пікселях.
3) процедура Ellipse (x, y : integer; StAngle, EndAngle, xr, yr, r : word); призначена для побудови еліптичних дуг. Параметри: координати центру, початковий та кінцевий кути, горизонтальний та вертикальний радіуси еліпсу у пікселях.
4) Процедура Sector (x, y : integer; StAngle, EndAngle, rx, ry, r : word); відображає сектор еліпсу, який заповнюється поточним стилем. Параметри аналогічні.
5) Процедура FillEllipse (x, y : integer; xr, yr : word); креслить контур еліпсу поточним кольором і заповнює поточним стилем. Параметри: координати центру, горизонтальний та вертикальний радіуси еліпсу.
6) Процедура PieSlice (x, y : integer; StAngle, EndAngle, r : word); зображає сектор кола і заповнює поточним стилем. Зручно використовувати для побудови кругових діаграм.
Програмування графіки в комбінації з текстом
Відображення тексту у графічному режимі має ряд особливостей:
1) всі дії виконуються тільки з рядковими константами і змінними, тому вся чисельна інформація повинна перетворюватись в символьну;
2) можливість використання різноманітних шрифтів.
Розглянемо основні засоби модуля GRAPH для виведення текстової інформації:
а) процедура OutText (text : string); виводить на екран рядок тексту, починаючи з поточного розміщення графічного курсору СР;
б) процедура OutTextXY ( x, y, text );виводить рядок тексту починаючи з указаних координат;
в) процедура SetTextStyle (Font, Direct, size : word); встановлює стиль тексту. Параметри: код шрифту, код орієнтації символів, розмір символів.
1. Відображення цифрової інформації.
В модулі GRAPH засоби відсутні. Але можна використовувати наступний спосіб: спочатку перетворити число або цифру в рядок за допомогою процедури Str, а далі операцією конкатенації (+) поєднати її з рядком, який відображається процедурою OutTextXY.
Приклад:
Max := 3.14;
Str (Max : 4 : 2, Smax);
OutTextXY (400, 40, ‘Max=’ + Smax);
Висновки: таким чином модульGRAPHмістить достатньо потужні засоби побудови і відображення різноманітної графічної інформації (геометричні фігури в комбінації з текстом і числами).
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Требуется разобрать ст. 135 Налогового кодекса по составу напогового...
Решение задач, Налоговое право
Срок сдачи к 5 дек.
Школьный кабинет химии и его роль в химико-образовательном процессе
Курсовая, Методика преподавания химии
Срок сдачи к 26 дек.
Реферат по теме «общественное мнение как объект манипулятивного воздействий. интерпретация общественного мнения по п. бурдьё»
Реферат, Социология
Срок сдачи к 9 дек.
Выполнить курсовую работу. Образовательные стандарты и программы. Е-01220
Курсовая, Английский язык
Срок сдачи к 10 дек.
Изложение темы: экзистенциализм. основные идеи с. кьеркегора.
Реферат, Философия
Срок сдачи к 12 дек.
Заполните форму и узнайте цену на индивидуальную работу!