Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Процедура

Читайте также:
  1. III. Процедура защиты выпускной квалификационной работы в Государственной аттестационной комиссии
  2. ВОПРОС 24. НАБЛЮДЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА.
  3. ВОПРОС 25- ФИНАНСОВОЕ ОЗДОРОВЛЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА
  4. ВОПРОС 27. КОНКУРСНОЕ ПРОИЗВОДСТВО КАК ПРОЦЕДУРА БАНКРОТСТВА
  5. ВОПРОС 29. МИРОВОЕ СОГЛАШЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА.
  6. ВОПРОС 32. ВНЕШНЕЕ УПРАВЛЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА
  7. Глава 4 Процедура и основные характеристики психологического
  8. Организация и процедура проведения социально-психологической диагностики
  9. Основная процедура поиска и устранения неполадок сетей
  10. Основные подходы и процедура присвоения марочного названия

MoveTo (X, Y: INTEGER);

Переміщує поточний вказівник в точку з координатами X, Y. Процедура

MoveRel (dX, dY: INTEGER);

переміщує СР на dX точок по горизонту і на dY точок по вертикалі відносно останнього положення поточного вказівника. При задані додатних значень dX чи dY значення відповідних координат поточного вказівника будуть збільшуватися, при задані від’ємних – зменшуватися.

Для визначення поточного положення графічного курсору використовуються функції

GetX: INTEGER;

GetY: INTEGER;

які повертають значення поточних координат вказівника (абсциси і ординати відповідно).

графічні вікна

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

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

Щоб стерти все зображення на екрані, тобто очистити його, використовується процедура ClearDevice. З моменту початку її виконання всі установки по кольору, фону і вікнам анулюються, і вказівник СР становиться в точку з координатами (0,0).

Схожі дії виконує і процедура GraphDefaults, але, крім очищення екрану, вона встановлює також ряд параметрів графічної системи:

1. Розмір графічного вікна стає рівним розміру екрану.

2. Відновлюється системна кольорова палітра.

3. Перезначаться кольори основних ліній і кольори екрану.

4. Товщина і стиль лінії встановлюються такими, як задано по замовчуванню.

5. Колір і стиль заповнення геометричних фігур і замкнутих ламаних встановлюється такими, як задано по замовчуванню.

6. Переустановлюється активний шрифт і його стиль.

Процедура GraphDefaults неявно викликається при ініціалізації графіки і виконує, по суті, всі стандартні установки графічних параметрів.

Для створення вікна слід скористатися процедурою

SetViewPort (X1, Y1, X2, Y2: INTEGER; Clip: BOOLEAN);

де X1, Y1 – координати лівого верхнього кута, X2, Y2 – координати правого нижнього кута. Параметр Clip визначає, будуть фрагменти зображення відрізатися при попаданні за межі вікна чи ні. Після створення вікна початком координат стає його верхній лівий кут, який буде мати координати (0,0).

Для очищення екрану використовується процедура SetViewPort. Після її виконання все зображення у вікні стирається, і вказівник СР встановлюється в ліву верхню точку вікна з координатами (0,0) (не слід забувати, що це координати в внутрішній системі координат, зв’язаній з даним вікном, а не в системі координат повного екрану). Перейти до системи координат повного екрану можна за допомогою процедури ClearDevice чи задавши в процедурі установки вікна максимально можливі значення.

Для визначення поточних параметрів вікна слугує процедура

GetViewSettings (VAR ViewSettings: ViewPortType);

Якщо скористатися нею зразу ж після ініціалізації графічного режиму, то виявиться, що графічним вікном являється весь екран.

Необхідно пам’ятати, що, на відмінну від текстових вікон, після виконання команди установки кольору фону SetBkColor і очищення екрану за допомогою SetViewPort фон графічного вікна буде таким, як і загальний фон екрану. Пому фон графічного вікна слід встановлювати за допомогою процедур SetFillPattern і Bar.

відображення точки на екрані

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

PUTPixel (X, Y: INTEGER; Color: WORD);

де X і Y – екрані координати точки, Color – її колір. Можливі значення Color беруться з встановленої палітри.

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

GetPixel (X, Y: INTEGER): WORD;

яка визначає номер кольору пікселю з координатами (X,Y). Звичайно номер кольору лежить в діапазоні від 0 до 15, в поверненому функцією значені значущим являється тільки молодший байт.

відображення відрізків прямих ліній

Процедура виводу відрізка прямої на екран (в поточному кольорі і стилі) визначена наступним чином:

Line (X1, Y1, X2, Y2: INTEGER);

В ній задаються координати початкової та кінцевої точок лінії.

Для побудови відрізків застосовуються іще дві процедури: LineTo і LineRel. Процедура LineTo(X,Y) будує відрізок з точки поточного положення вказівника то точки з координатами (X,Y). Процедура LineRel(dX, dY) проводить відрізок від поточного положення вказівника до точки (CPX+dX, CPY+dY), де CPX і CPY – поточні координати СР.

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

SetLineStyle (LineStyle: WORD; Patter: WORD; Thickness: WORD);

Параметром LineStyle задається тип рядка, Patter – шаблон, Thickness – товщина лінії.

Управління режимом відображення ліній на екран. При малюванні ліній на екрані можна назначити режим порозрядного сполучення зображень. Від нього залежить, буде чи стерта при накладанні двох точок „нижня”, і яким способом можна видалити „верхнє” зображення з екрану. Управляючи цим режимом, можна отримати складний відео ефект. Сам режим задається процедурою

SetWriteMode (Mode: INTEGER);

Аргумент Mode може приймати одне з двох значень. Якщо Mode=0, то при „ накладанні” пікселю, який належить відображеній лінії, на „попередній” даному пікселю присвоюється поточне значення кольору. Таким чином, відображена лінія буде мати заданий колір. Якщо Mode=1, то код кольору пікселів, які утворюють лінію, вираховується як результат операції виключного ЧИ над кодом поточного кольору і кодом кольору пікселю на екрані, через які проходить лінія.

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

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

Rectangle (X1, Y1, X2, Y2: INTEGER);

де X1, Y1 – координати лівого верхнього кута, X2, Y2 – координати правого нижнього кута прямокутника. Це дуже корисна процедура, з її допомогою можна легко побудувати діаграму для візуального аналізу даних. Область всередині прямокутника не замальовується і співпадає з кольором фону.

Більш ефектні прямокутники можна будувати за допомогою процедури

Bar (X1, Y1, X2, Y2: INTEGER);

Вона малює прямокутник, внутрішня область якого залита по поточному шаблону. Дана процедура звичайно використовується в діловій графіці для побудови стовпових діаграм. Параметри (X1,Y1),(X2,Y2) – координати верхнього лівого і правого нижнього кутів прямокутника. Іще більше наглядне представлення інформації під час малюванні діаграм дозволяє отримати процедура

Bar3D (X1, Y1, X2, Y2: INTEGER; D3: WORD; Top: BOOLEAN);

За її допомогою можна відобразити паралелепіпед, „лицева сторона” якого заливається по поточному шаблону, а глибина задається в пікселях параметром D3. Параметр Top задає режим верхньої площини: True – відображати, False – не відображати. Цей параметр потрібен для малювання стовпців, розташованих „один на одному”. В модулі Graph визначені дві константи для цієї процедури:

CONST

TopOn = TRUE; {верхня площина відображається}

TopOff = FALSE; {верхня площина не відображається}

 

побудова многокутників

многокутники можна малювати найрізноманітнішими способами, наприклад за допомогою процедур Line і LineTo. В Turbo Pascal знаходиться процедура DrawPoly, яка дозволяє будувати довільні многокутники за допомогою ліній поточного кольору, стилю і товщини. Вона має наступний синтаксис:

DrawPoly (NumPoint: WORD; VAR PolyPoint);

DrawPoly дозволяє відображати на екрані дисплея будь-яку ламану, задану сукупністю координат деякої множини точок. Це може бути як складна геометрична фігура, так і графік математичної функції, заданої в табличному вигляді. Параметр NumPoint – це кількість точок ламаної. В якості параметра PolyPoint задається змінна, тип її може бути довільним.

побудова дуг, еліпсів і кіл

алгоритм побудови кривих досить складний для самостійної реалізації, тому практично у всіх випадках слід користуватися готовими процедурами модуля Graph.

Для зображення кола використовується процедура

Circle (X, Y: INTEGER; Radius: WORD);

Тут (X,Y) – координати центру кола, Radius – його радіус. Результатом роботи буде коло, якщо коефіцієнт стиску зображення відповідає встановленому BGI-драйвером для поточного графічного режиму. В протилежному випадку на екрані з’явиться еліпс, витягнутий по вертикалі (коли коефіцієнт стиску більший прийнятого по замовчуванню) чи по горизонталі (коли коефіцієнт стиску менший прийнятого по замовчуванню).

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

Arc (X, Y: INTEGER; StAngle; EndAngle; Radius: WORD);

де (X,Y) – центр кола дуги, StAngle і EndAngle – початковий і кінцевий кути, які відраховуються від горизонтальної осі проти часової стрілки, Radius – радіус. Очевидно, що якщо StAngle=0 і EndAngle=359, то накреслиться повне коло.

Для побудови еліптичних дуг призначена процедура

Ellipse (X, Y: INTEGER; StAngle, EndAngle: WORD; XR, YR: WORD);

де (X,Y) – центр еліпса в дисплейних координатах, XR і YR – горизонтальна і вертикальна осі. Дуга еліпса накреслюється поточним кольором від початкового кута StAngle до кінцевого кута EndAngle, так само як і в процедурі Arc.

РОБОТА З ТЕКСТОМ

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

відображення рядків

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

OutText (TextString: STRING);

виводить на екран рядок тексту, починаючи з початкового положення СР. Очевидний недолік процедури а тому, що не можна вказати довільну точку початку виводу. Цей недолік можна обійти за допомогою MoveTo, але краще скористатися процедурою

OutTextXY (X, Y, Text);

де X, Y – координати точки початку виводу тексту, Text – константа чи змінна типу STRING.

відображення числової інформації

звичайно для недосвідчених користувачів відображення числової інформації на екрані представляє деякі трудності, так як в модулі Graph немає призначених для цього процедур. З цього положення можна вийти наступним чином: спочатку перетворити число в рядок за допомогою процедури Str, а потім за допомогою операцій конкатенації (+)об’єднати її з відображеною функцією OutTextXY рядком.

УПРАВЛІННЯ ПАРАМЕТРАМИ ЗОБРАЖЕННЯ

встановлення кольору

Для різних типів адаптерів кількість кольорів, одночасно відображених на екрані в графічному режимі, може бути різною. Але для всіх BGI-драйверів вона обмежена діапазоном цілочислових значень від 0 до 15.

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

GetMaxColor: WORD;

Для встановлення кольору і фону в мові Turbo Pascal застосовуються процедури SetColor і SetBkColor. Процедура

SetColor (Color: WORD);

слугує для задання кольору, який буде використовуватися процедурами графічного виводу. Номер кольору вказується параметром Color. По замовчуванню для зображення використовується колір з максимальним номером, а для фону – з мінімальним. Якщо в якості Color вказаний недоступний номер кольору, поточний колір не змінюється. Процедура

SetBkColor (Color: WORD);

встановлює новий колір фону, який визначається значенням Color.

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

GetColor: WORD;

повертає значення поточного кольору зображення, а функція

GetBkColor: WORD;

поточний колір фону.

встановлення палітри

Палітрою називається максимальна набір кольорів, які підтримує BGI-драйвер. Вона включає 16 кольорів, пронумерованих від 0 до 15, які використовуються по замовчуванню в режимі 320х200 для EGA як в текстовому, так і в графічному режимах.

Отримати інформацію про поточну палітру можна за допомогою процедури

GetDefaultPalette (VAR Palette: PaletteType);

де Palette – змінна типу PaletteType.

ТЕМА: МОДУЛЬ DOS

Модуль Dos містить ряд підпрограм для роботи з файлами і доступ до засобів операційної системи. Не одна з програм модуля Dos не визначена в стандартному Pascal, тому вони поміщені в окремий модуль.

Щоб використовувати підпрограми, які знаходяться в модулі Dos, його ім'я необхідно вказати в операторі USES на початку програми:

USES Dos;

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

1. Функції управління операційним середовищем.

2. Процедури управління процесами.




Дата добавления: 2015-09-11; просмотров: 13 | Поможем написать вашу работу | Нарушение авторских прав

Квартира з номером 34 у 13 будинку з номером 12. | Release(p); | Формування. | Readln(a); | New(q); | USES CRT; | Заголовок. | Xx: real; | Rewrite (Output); | Процедура |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.013 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав