Реферат по предмету "Информатика, программирование"


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

Житомирський Військовий Інститут


Національного Авіаційного Уніврситету


Реферат на тему:


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


Житомир 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 –
Borland
Graphics
Interface –
графічний шнтерфейс фірми 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
, який підключається стандартним способом:USES
GRAPH;


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


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


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’);


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


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


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


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


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


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


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


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






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


Приклад 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
.


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


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


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


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


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


д) процедура GetModeRange (
Driver :
integer;
var
LoMode,
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) процедура Set
Color (
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 значення:


Norm
Width = 1


Thick
WidTh
= 3


Побудова прямокутників та паралелепіпедів


1) Процедура Rectangle
(
x
1,
y
1,
x
2,
y
2 :
integer
);
створює прямокутник з координатами x1, y1 – лівого верхнього кута і x2, y2 – правого нижнього кута. Область середини прямокутника незафарбована і співпадає з кольором фону екрану. Для ліній прямокутника використовується поточний стиль ліній і колір (заданий).


2) Процедура Bar
(
x
1,
y
1,
x
2,
y
2 :
integer
);
утворює прямокутник, внутрішня область якого заповнюється поточним стилем (тип і колір). Параметри процедури – відповідні координати лівого верхнього та правого нижнього кутів. Використовують для побудови гістограм, діаграм і т.п.


3) Процедура Bar
3
D
(
x
1,
y
1,
x
2,
y
2 :
integer
;
D
3 :
word
;
Top
:
boolean
);
відображає паралелепіпед (трьохмірне зображення) і зафарбовує його передню грань поточним стилем. X1..
Y2
– координати лівого верхнього та правого нижнього кута передньої грані; D3 –
трьохмірне зображення "глибина" у пікселях; Top
– задає режим відображення верхньої грані. В модуліGRAPH
для режиму Top
визначені 2 константи:


Top
On
=
TRUE
– верхня грань відображається;


Top
Off
=
FALSE
– верхня грань не відображається.


Будова многокутників.


Многокутники можна зображати декількома способами: наприклад, за допомогою процедур Line
,
LineTo
.


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


1) процедура DrowPoly (
n :
word;
var
points);
створює многокутник за допомогою ліній поточного кольору, стиля і товщини. Параметр n
– кількість точок ламаної; points
– змінна типу PointType
, яка містить координати x, yточок ламаної.


В модуліGRAPH
передбачений такий тип:


Type


PoinType = RECORD


x, y : integer;


end;


2) процедура FillPoly (n : word; var points);
схожа з попередньою, але навідміну від неї – малює замкнутий многокутник і зафарбовує його. Стиль і колір лінії і контура задається процедурами SetLineStyle
i
SetColor
, тип і колір заповнення – процедурою 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 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.