Засобами мови програмування pascal. 


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



ЗНАЕТЕ ЛИ ВЫ?

Засобами мови програмування pascal.



 


Зміст

1. Теоретичні відомості - 3 -

1.1. Ініціалізація графічного режиму. - 3 -

1.2. Базові процедури і функції. - 3 -

1.3. Екран і вікно в графічному режимі. - 5 -

1.4. Виведення найпростіших фігур. - 5 -

1.4.1. Виведення точки. - 5 -

1.4.2. Виведення лінії. - 6 -

1.5. Побудова багатокутників. - 7 -

1.5.1. Побудова прямокутників. - 7 -

1.5.2. Побудова багатокутників. - 7 -

1.6. Побудова дуг і кіл. - 9 -

1.7. Робота з текстом. - 10 -

1.7.1. Виведення тексту. - 10 -

1.7.2. Виведення чисельних значень. - 11 -

1.7.3. Шрифти. - 11 -

1.7.4. Вирівнювання тексту. - 12 -

1.8. Побудова графіків функцій. - 12 -

1.9. Цикли в графіці. Побудова випадкових процесів. - 14 -

1.10. Створення ілюзії руху. - 15 -

2. Приклад виконання лабораторного завдання. - 18 -

3. Завдання до виконання лабораторної роботи. - 24 -

4. Контрольні запитання. - 25 -

5. Варіанти завдань. - 25 -


МЕТОДИ СТВОРЕННЯ ГРАФІЧНИХ ОБ'ЄКТІВ ЗАСОБАМИ МОВИ ПРОГРАМУВАННЯ PASCAL.

Мета: розглянути можливості створення рухомих графічних об'єктів та простих мультиплікаційних зображень засобами мови Pascal.

Теоретичні відомості

Ініціалізація графічного режиму

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

Щоб зробити процес графічного програмування більш ефективним, фірма Borland International розробила спеціалізовану бібліотеку Graph (в цьому бібліотечному модулі міститься 79 графічних процедур, функцій, різних стандартних констант і типів даних), набір драйверів, що дозволяють працювати з різними типами моніторів, і набір шрифтів для виведення на графічний екран текстів різної величини і форми.

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

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

1. Підключити модуль Graph (бібліотеку графічних процедур): uses Graph;

2. Встановити графічний режим:

- описуємо змінні, які визначають графічний драйвер і монітор:

var gd, gm: integer;

- задаємо команду ПК для самовибору значень змінних:

gd:=Detect;

( значення gm після команди gd:=detect; визначається автоматично)

- ініціалізували графічний режим:

InitGraph(gd, gm, ’вказується шлях до драйвера, чим докладніше, тим краще’ )

З цієї миті всі графічні засоби доступні користувачу.

3. Завершити роботу в графічній системі: CloseGraph.

 

Базові процедури і функції.

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

Щоб будувати зображення, необхідно вказувати точку початку виведення. В текстових режимах цю точку вказує курсор, який присутній на екрані. В графічних режимах видимого курсора немає, але є невидимий поточний покажчик CP (Current Pointer). Фактично це той же курсор, але він невидимий.


Таблиця 7.1

Процедури модуля Graph.

Процедура Формат Дія
Setcolor Setcolor (а: word); Встановлює колір, яким здійснюватиметься малювання
Setbkcolor Setbkcolor (а: word); Встановлює колір фону
Setfillstyle Setfillstyle (a,b: word); a–стиль зафарбовування, b – колір Встановлює стиль і колір зафарбовування
Setlinestyle Setlinestyle (а,b,c:word); А – стиль лінії, b- зразок побудови лінії (може встановлюватися користувачем), С-товщина лінії Встановлює стиль і товщину лінії
Settextstyle Settextstyle (а,b,c:word); Встановлює шрифт, стиль і розмір тексту
Setfillpattern Setfillpattern (pattern:fillpatterntype;color:word); Pattern - маска Вибирає шаблон заповнення, визначений користувачем
Cleardivice Cleardivice Очищає екран і встановлює поточний покажчик в початок
Setviewport Setviewport(x1,y1,x2,y2:integer,clip:boolean); Встановлює попточне вікно для графічного виведення
Clearviewport Clearviewport Очищає вікно
Putpixel Putpixel (а,b,c:integer); Малює точку кольором с в (x,y)
Line Line(x1, y1, x2,y2:integer); Малює лінію від (x1, y1) до (x2,y2)
Rectangle Rectangle (x1, y1, x2, y2:integer); Малює прямокутник з діагоналлю від (x1, y1) до (x2, y2)
Bar Bar (x1, y1, x2, y2:integer); Малює зафарбований прямокутник
Bar3d Bar3d(x1,y1,x2,y2,d:integer,а:boolean); Малює тривимірну смугу (паралелепіпед)
Circle Circle (x,y,r: word); Малює коло радіусу r з центром в точці (x, у)
Arc Arc(x, у, а, b, r:integer); А, b- початковий і кінцевий кути в градусах   Малює дугу з початкового кута до кінцевого, використовуючи (x,y) як центр
Ellipse Ellipse (x, у, а, b, rx, ry: integer); А, b- початковий і кінцевий кути в градусах Малює еліптичну дугу від початкового кута до кінцевого, використовуючи (x, у) як центр
Fillellipse Fillellipse (x, у, rx, ry:integer); Rx, ry – вертикальна і горизонтальна вісі Малює зафарбований еліпс
Moveto Moveto (x, у:integer); Пересуває поточний покажчик в (x, у)
Moverel Moverel(x, у: integer); Пересуває поточний покажчик на задану відстань від поточної позиції, на x по горизонталі і на у по вертикалі
Outtext Outtext (text: string); Виводить текст від поточного покажчика
Outtextxy Outtextxy(x, у: integer, text: string); Виводить текст з (x, у)
Sector Sector(x, у, а, b, rx, ry: integer); а, b- початковий і кінцевий кути в градусах Малює і заповнює сектор еліпса

Таблиця 7.2

Функції модуля Graph

Getbkcolor Повертає поточний фоновий колір
Getcolor Повертає поточний колір
Getx Повертає координату x поточної позиції
Gety Повертає координату у поточної позиції
Getpixel Повертає колір крапки в (x, у)

Екран і вікно в графічному режимі.

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

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

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

SetViewPort (x1, y1, x2, y2:integer, Clip:boolean);

де x1, y1 – координати лівого верхнього кута, x2, y2 – координати правого нижнього кута вікна. Параметр Clip визначає, чи малюнок відсікатиметься при виході за межі вікна (Clip:=True) чи ні (Clip:=False). Після створення вікна за точку відліку приймається верхній лівий кут вікна, що має координати (0,0).

Координатну систему повного екрану можна відновити, зокрема, за допомогою ClearDevice або задавши в процедурі установки вікна максимально можливі значення:

SetViewPort(0, 0, GetMaxX, GetMaxY, true);

Необхідно пам'ятати, що на відміну від текстових вікон графічні вікна після команди установки фону SetBkColor і очищення за допомогою ClearViewPort міняють фон разом із загальним фоном екрану. Тому фон (точніше «зафарбовування») графічного вікна слід встановлювати за допомогою процедур SetFillStyle і SetFillPattern.

Виведення найпростіших фігур.

Виведення точки.

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

PutPixel (x, у: integer, color:word);

де x, у: координати розташування точки, color – колір.

Можливі значення Color приведені в таблиці:

Таблиця 7.3

Шкала кольорів

Колір Код Колір Код
Black – чорний   Darkgray – темно-сірий  
Blue – синій   Lightblue – голубий  
Green - зелений   Lightgreen – яскраво-зелений  
Gyan – бірюзовий   Lightgyan – яскраво-бірюзовий  
Red – червоний   Lightred – яскраво-червоний  
Magenta – малиновий   Lightmagenta – яскраво-малиновий  
Brown – коричневий   Yellow – жовтий  
Lightgray – світло-сірий   White – білий  

Приклад.

PutPixel(320, 240, 4);

PutPixel(320,240, Red); виводить в центрі екрану точку червоного кольору.

 

Виведення лінії.

З точок будуються лінії (відрізки прямих). Це можна зробити за допомогою процедури

Line (x1, y1, x2,y2:integer);

де x1, y1 – координати початку, x2,y2 - координати кінця лінії, наприклад Line(1,1,600,1).

В процедурі Line немає параметра для установки кольору. В цьому випадку колір задається процедурою SetColor (колір: word); де колір з таблиці 7.3.

Приклад.

SetColor(Gyan);

Line(1,1,600,1);

Для креслення ліній застосовуються ще дві процедури: LineTo і LineRel. Процедура LineTo (x,y: integer) будує лінію з точки поточного положення покажчика в точку з координатами x,y. Процедура LineRel (dx,dy: integer) проводить лінію від точки поточного розташування покажчика (x, у) в точку (x+dx, y+dy).

Турбо Паскаль дозволяє креслення лінії самого різного стилю: тонкі, широкі, штрихові, пунктирні і т.д. Установка стилю проводиться процедурою SetLineStyle(а,b,c: word), де а встановлює тип рядка можливі значення якого приведені в таблиці 7.4; b – зразок, с – товщина лінії, визначувана константами, вказаними в таблиці 7.5. Якщо застосовується один із стандартних стилів, то значення b рівне 0. Якщо користувач хоче активізувати власний стиль, то значення b =4. В цьому випадку користувач сам вказує примітив (зразок), з якого будується лінія.

Наприклад:

SetLineStyle(1,0,1);

Line(15,15, 150,130);

або

SetLineStyle(UserBitLn,$5555,ThickWidth);

Line(15,15, 150,130);

Таблиця 7.4

Константа Значення Опис
Solidln   Безперервна лінія
Dottedln   Лінія з крапок
Centerln   Лінія з крапок і тире
Dashedln   Штрихова лінія
Userbitln   Тип користувача

Таблиця 7.5

Константа Значення Опис
Normwidth   Нормальна товщина (1піксель)
Thickwidth   Жирна лінія (3 пікселі)

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

Program treug;

uses graph; { підключення бібліотеки графічних процедур}

var gd,gm: integer; {опис змінних, визначаючих графічний драйвер і монітор}

Begin

gd:=detect; {визначення значень змінних по вибору ПК}

initgraph(gd, gm, ‘ с/bp’); {ініціалізація графічного режиму}

SetColor(4); {задання кольору лінії}

SetLineStyle(1,0,3); {задання стилю лінії}

Line(320, 240, 320, 180);

Line(320, 240, 390, 240);

Line(390, 240, 320, 180);

End.

 

Побудова багатокутників.

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

Для побудови прямокутних фігур є декілька процедур.

Перша з них – викреслювання одновимірного прямокутника:



Поделиться:


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

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