русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


ТЕОРЕТИЧНИЙ МАТЕРІАЛ, НЕОБХІДНИЙ ДЛЯ ВИКОАННЯ РОБОТИ


Дата додавання: 2014-11-27; переглядів: 824.


Основні процедури та функції для роботи з графікою умовно можна поділяти на наступні групи

1. Службові – вмикання, вимикання графічного режиму, зміна відео режиму, очистка екрану

2. Керування кольором – зміна кольорів палітри, встановлення поточного кольору, стиля заливки

3. Виведення примитівів – точек, ліній, окружностей, багатокутників, заповнення областей екрану

Всі процедури і функції розташовані в модулі Graph, який входить до стандартної поставки середи програмування Pascal

Розглянемо ці типи процедур та функції послідовно.

1) . Службові процедури та функції

Графічний режим У цьому режимі зображення формується з ряду світних крапок - пікселів. Кожний піксель задається парою координат - х та у. Для різних графічних режимів координатні сітки можуть бути різними. Колірне значення кожного пікселя зберігається у вигляді бітів у відеобуфері й переноситься на екран.

Робота із графікою в Турбо-Паскале. Після включення комп'ютера відео термінал перебуває в текстовому режимі. Для переходу в графічний режим у своїй програмі необхідно реалізувати виклик графічного драйвера.

Для цього використається процедура InitGraf (Driver, Mode, ‘C:\TP7\BGI’), де

· Driver -тип драйвера (константи, найпоширеніша 9 - VGA );

· Mode -режим роботи відеоадаптера. Кожний драйвер забезпечує кілька режимів роботи.

· ‘C:\TP7\BGI’ -адреса директорії (шлях), у якій перебуває шукана програма - драйвер. У нашому випадку це шлях до драйвера EGAVGA.BGI.

Якщо тип використовуваного в комп'ютері адаптера невідомий, можна розпізнати його автоматично:

DetectGraph (Driver, Mode);

InitGraf (Driver, Mode, 'C:\TP7\BGI')

Функція GraphResult повертає код результату виконання останньої графічної підпрограми. Якщо помилки не відбулося, то код буде дорівнює 0. Інакше функція поверне негативне число від -1 до -14, що вказує на код помилки. Після виклику GraphResultавтоматично скидається в нуль.

Після того як адаптер переведений у графічний режим роботи, можна використати набір графічних підпрограм, що входять до складу модуля Graph(graph.tpu ).

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

Зауваження: у графічному режимі курсор на екрані не высвечивается.

2) Керування кольором

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

SetColor (Color:Word) та SetBkColor (Color:Word) відповідно. Color кольорова константа змінюється від 0..15.

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

SetLineStyle (LineStyle, Pattern, Thickness: Word).

Константи LineStyle задає визначені заздалагеть стилі лінії SolidLn (0) – сплошна, DottedLn (1) – з точек, CenterLn (2) – штрих-пунктирна, DashedLn (3) – штрихова, UserBitLn (4) – визначена користувачем. В цьому випадку други параметр визначає взаємне положення заповнених та пустих ділянок на протязі лінії. Константа Pattern уявляє собою послідовність біт з 0 та 1. Нули відображають пусте місце 1 – заповнені участки. Параметр Thickness задає товщину лінії. Значення 1 – тонка лінія, значення 3 – товста.

Зміна стилю заповнення області (сполошне, штрихове) здійснюється процедурою

SetFillStyle(Pattern: Word; Color: Word). Параметр Color задає кольор, параметр Pattern номер шаблона заповнення. Значення параметру приведені в таблице. Дана процедура здійснюється разом з процедурою заповнення області FloodFill(X,Y:Integer; Border:Word).

3. Виведення примитівів

В мові Pascal визначені процедури для малювання основних графічних примитівів. В таблиці надані основні процедури з описом параметрів.

Процедури виведення графічних примитівів.

Примітів Процедура Опис
Точка PutPixel(X,Y:Integer; Col:Word); Установка пикселя кольором Col в позиції (X,Y)
Пряма Line (X1,Y1,X2,Y2:Integer) Пряма из позиции (X1, Y1) в позицию (X2, Y2)
LineTo(X,Y:Integer) Прямая з поточної позиції в позицию (X,Y)
LineRel(dX,dY:Integer) Прямая поточної позиції в позицию, задаваєму зміщенням відносно поточної
Поточна позіція MoveTo(X,Y:Integer) MoveRel(dX,dY:Integer) Абсолютне або відносне зміщення
Прямокутник Rectangle(x1, y1, x2, y2: Integer) (X1,Y1) и (X2,Y2) – противоположні вершини . Bar – заповнений прямокутник
Bar(x1, y1, x2, y2: Integer)
Окружность Circle(X,Y: Integer; Radius: Word) Окружность з центром в (X,Y) та радіусом Radius
Дуга Arc (X,Y: Integer; StAngle, EndAngle, Radius: Word) Центр (X,Y), радіус Radius; дуга від кута StAngle до EndAngle (у градусах)
Сектор PieSlice(X, Y: Integer; StAngle, EndAngle, Radius: Word) Сектор окружності, задається як і дуга (Arc)
Еліпс Ellipse(X, Y: Integer; StAngle, EndAngle: Word; XRadius, YRadius:Word); XRadius и YRadius – розміри півосей; інші параметри як і у Arc.
FillEllipse(X, Y: Integer; XRadius, YRadius: Word)
Полігон DrawPoly(Num: Word; var PP) Num – кількість точек; PP – масив з PointType. FillPoly – заповнений полігон.
FillPoly(Num: Word; var PP)
Текст OutText(TextString: string) OutTextXY(X,Y: Integer; TextString: string) X,Y – точка виведення ; TextString –текст

 

Підпрограми роботи з відеопам'яттю Для створення зображень, що рухаються, необхідно користуватися наступними функціями:

1 ImageSize(X1,Y1,X2,Y2); - одержання числа байтів, необхідних для розміщення в пам'яті прямокутної ділянки екрана.

2 Get Mem (V^,size) – віділення ділянки памяті розміром size в «кучі»

3 GetImage(X1,Y1,X2,Y2,V^); - запам'ятовування зображення ділянки екрана з крайніми координатами (X1,Y1) та (X2,Y2)в буфері (у змінної V).

4. PutImage (X,Y,V^,C);- виведення зображення з буфера на екран. Параметри X та Y задают точку виведення, V^ - те що виводиться, С – яким чином виводиться може набувати значень - NormalPut, CopyPut (0) –звичайне виведення, XORPut (1) – інверсія , OrPut (2) – наложення, AndPut (3) – перетін, NotPut (4) – інверсія.

 


<== попередня лекція | наступна лекція ==>
ПРИКЛАД ВИКОНАННЯ ЗАВДАННЯ | ЗМІСТ, ПОСЛІДОВНІСТЬ, МЕТОДИКА ВИКОНАННЯ РОБОТИ


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн