48055 (608443), страница 2

Файл №608443 48055 (Побудова динамічної графіки) 2 страница48055 (608443) страница 22016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Procedure ClearDevice;

Процедура ClearViewPort.

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

Заголовок:

Procedure ClearViewPort;

Процедура GetAspectRatio.

Повертає два числа, дозволяючи оцінити співвідношення сторін екрану.

Заголовок:

Procedure GetAspectRatio(var X,Y: Word);

Тут X, Y - змінні типу Word. Значення, що повертаються в цих змінних, дозволяють обчислити відношення сторін графічного екрану в пікселях. Знайдений з їх допомогою коефіцієнт може використовуватися при побудові правильних геометричних фігур, таких як кола, квадрати і т.п. Наприклад, якщо Ви хочете побудувати квадрат із стороною L пікселів по вертикалі, Ви повинні використовувати оператори

GetAspectRatio (Xasp, Yasp);

Rectangle(x1, y1, x1+L*round (Yasp/Xasp), y1+L);

а якщо L визначає довжину квадрата по горизонталі, то використовується оператор

Rectangle (x1,y1,x1+L,y1+L*round(Xasp/Yasp));

Процедура SetAspectRatio.

Встановлює масштабний коефіцієнт відношення сторін графічного екрану. Заголовок:

Procedure SetAspectRatio(X,Y: Word);

Тут X, Y- встановлювані співвідношення сторін.

Процедура SetActivePage.

Робить активною вказану сторінку відеопам'яті.

Заголовок:

Procedure SetActivePage(PageNum: Word);

Тут PageNum - номер сторінки.

Процедура може використовуватися тільки з адаптерами, що підтримують багатосторінкову роботу (EGA, VGA і т.п.). Фактично процедура просто переадресує графічний висновок в іншу область відеопам'яті, проте виведення текстів за допомогою Write/WriteLn завжди здійснюється тільки на сторінку, яка є видимою в даний момент (активна сторінка може бути невидимою). Нумерація сторінок починається з нуля.

Процедура SetVisualPage.

Робить видимою сторінку з вказаним номером.

Заголовок:

Procedure SetVisualPAge(PageNum: Word);

Тут PageNum - номер сторінки.

Процедура може використовуватися тільки з адаптерами, що підтримують багатосторінкову роботу (EGA, VGA і т.п.). Нумерація сторінок починається з нуля.

  • Багатокутники

Процедура Rectangle.

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

Заголовок:

Procedure Rectangle(X1,Y1,X2,Y2: Integer);

Тут X1... Y2 - координати лівого верхнього (X1, Y1) і правого нижнього (Х2, Y2) кутів прямокутника. Прямокутник викреслюється з використанням поточного кольору і поточного стилю ліній.

Процедура DrawPoly.

Викреслює довільну ламану лінію, задану координатами точок зламу.

Procedure DrawPoly(N: Word; var Points)

Тут N - кількість точок зламу, включаючи обидві крайні крапки; Points - змінна типа PointType, що містить координати точок зламу.

Координати точок зламу задаються парою значень типа Word: перше визначає горизонтальну, друге - вертикальну координати. Для них можна використовувати наступний певний в модулі тип:

type

PointType = record

х, у : Word

end;

  • Дуги, кола, еліпси

Процедура Circle.

Викреслює коло.

Заголовок:

Procedure Circle(X,Y: Integer; R: Word);

Тут X, Y- координати центру; R - радіус в пікселях.

Коло виводиться поточним кольором. Товщина лінії встановлюється поточним стилем, вид лінії завжди SolidLn (суцільна). Процедура викреслює правильне коло з урахуванням зміни лінійного розміру радіусу залежно від його напряму щодо сторін графічного екрану, тобто з урахуванням коефіцієнта GetAspectRatio. У зв'язку з цим параметр R визначає кількість пікселів в горизонтальному напрямі.

Процедура Arc.

Креслить дугу кола.

Заголовок:

Procedure Arc(X,Y: Integer; BegA,EndA,R: Word);

Тут X, У - координати центру; BegA, EndA - відповідно початковий і кінцевий кути дуги; R - радіус.

Кути відлічуються проти годинникової стрілки і вказуються в градусах. Нульовий кут відповідає горизонтальному напряму вектора зліва направо. Якщо задати значення початкового кута 0 і кінцевого - 359, то буде виведено повне коло. При викреслюванні дуги кола використовуються ті ж угоди щодо ліній і радіусу, що і в процедурі Circle.

От як виглядають дві дуги: одна з кутами 0 і 90, друга 270 і 540 градусів (мал. 1):

Мал.1 Ілюстрація процедури Arc

Процедура GetArcCoords.

Повертає координати трьох крапок: центру, початку і кінця дуги.

Заголовок:

Procedure GetArcCoords(var Coords: ArcCoordsType);

Тут Coords - змінна типа ArcCoordsType, в якій процедура повертає координати центру, початку і кінця дуги.

Тип ArcCoordsType визначений в модулі Graph таким чином:

type

ArcCoordsType = record

X,Y : Integer; {Координати центру}

Xstart,Ystart: Integer; {Початок дуги}

Xend,Yend : Integer; {Кінець дуги}

end;

Процедура Ellipse.

Викреслює еліпсну дугу.

Заголовок:

Procedure Ellipse(X,Y: Integer; BegA,EndA,RX,RY: Word);

Тут X, Y - координати центру; BegA, EndA - відповідно початковий і кінцевий кути дуги; RX, RY- горизонтальний і вертикальний радіуси еліпса в пікселях.

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

  • Фарби, палітри, заповнення

Процедура SetColor.

Встановлює поточний колір для ліній і символів, що виводяться. Заголовок:

Procedure SetColor(Color: Word);

Тут Color - поточний колір.

В модулі Graph визначені точно такі ж константи для завдання кольору, як і в модулі СИГ .

Функція GetColor. Повертає значення типа Word, що містить код поточного кольору.

Заголовок:

Function GetColor: Word;

Функція GetMaxColor.

Повертає значення типу Word, що містить максимальний доступний код кольору, який можна використовувати для звернення до SetColor.

Заголовок:

Function GetMaxColor: Word;

Процедура SetBkColor.

Встановлює колір фону.

Заголовок:

Procedure SetBkColor(Color: Word);

Тут Color - колір фону.

На відміну від текстового режиму, в якому колір фону може бути тільки темного відтінку, в графічному режимі він може бути будь-ким. Установка нового кольору фону негайно змінює колір графічного екрану. Це означає, що не можна створити зображення, дві ділянки якого мали б різний колір фону. Для CGA -адаптера в режимі високого розширення установка кольору фону змінює колір активних пікселів. Після заміни кольору фону на будь-який, відмінний від 0 (Black) колір, Ви не зможете більш використовувати колір 0 як чорний, він замінюватиметься на колір фону, оскільки процедури модуля Graph інтерпретують колір з номером 0 як колір фону. Це означає, зокрема, що Ви вже не зможете повернути фону чорний колір!

Функція GetBkColor.

Повертає значення типу Word, що містить поточний колір фону. Заголовок:

Function GetBkColor: Word;

Процедура SetPalette.

Замінює один з кольорів палітри на новий колір.

Заголовок:

Procedure SetPalette(N: Word; Color: Shortlnt);

Тут N - номер кольору в палітрі; Color - номер знов встановлюваного кольору.

Дана процедура може працювати тільки з адаптерами EGA або VGA. Вона не повинна використовуватися з IBM8514 або 256-кольоровим варіантом VGA - для цих адаптерів призначена особлива процедура SetRGBPalette (див. нижче). Первинне розміщення кольорів в палітрах EGA/VGA відповідає послідовності їх опису константами Black....White, тобто колір з індексом 0 - чорний, 1 - синій, 2 - зелений і т.д. Після звернення до процедури всі фрагменти зображення, виконані кольором з індексом N з палітри кольорів, одержать колір Color. Наприклад, якщо виконати оператор

SetPalette(2,White);

то колір з індексом 2 (первинно це - бірюзовий колір Cyan) буде замінений на білий. Колір з індексом 0 ототожнюється з кольором фону і може змінюватися разом з будь-яким іншим кольором.

Процедура GetPalette.

Повертає розмір і кольори поточної палітри.

Заголовок:

Procedure GetPalette(var Palettelnfo: PaletteType);

Тут Palettelnfo - змінна типа PaletteType, що повертає розмір і кольори палітри.

В модулі Graph визначена константа

const

MaxColors =15;

і тип

type

PaletteType = record

Size : Word; {Кількість кольорів в палітрі}

Colors : array [0..MaxColors] Shortlnt

{Номери вхідних в палітру кольорів}

end;

Процедура SetAllPalette.

Змінює одночасно декілька кольорів палітри.

Заголовок процедури:

Procedure SetAllPalette(var Palette);

Параметр Palette в заголовку процедури описаний як параметр, що не типізується. Перший байт цього параметра повинен містити довжину N палітри, решта N байтів - номери знов встановлюваних кольорів в діапазоні від -1 до MaxColors. Код -1 означає, що відповідний колір початкової палітри не міняється.

Функція GetPaletteSize.

Повертає значення типу Integer, що містить розмір палітри (максимальна кількість доступних кольорів).

Заголовок:

Function GetPaletteSize: Integer;

Процедура GetDefaultPalette.

Повертає структуру палітри, встановлювану за змовчуванням (в режимі автонастройки).

Заголовок:

Procedure GetDefaultPalette(var Palette: PaletteType);

Тут Palette - змінна типа PaletteType (див. процедуру GetPalette), в якій повертаються розмір і кольори палітри.

Процедура SetFillStyle.

Встановлює стиль (тип і колір) заповнення.

Заголовок:

Procedure SetFillStyle(Fill,Color: Word);

Тут Fill - тип заповнення; Color - колір заповнення.

За допомогою заповнення можна покривати які-небудь фрагменти зображення узором, що періодично повторюється. Для вказівки типу заповнення використовуються наступні заздалегідь певні константи:

const

EmptyFill = 0;{Заповнення фоном (узор відсутній)}

SolidFill = 1;{Суцільне заповнення}

LineFill = 2;{Заповнення -------}

LtSlashFill = 3;{Заповнення ///////}

SlashFill = 4;{Заповнення потовщеними ///}

BkSlashFill = 5;{Заповнення потовщеними \\\}

LtBkSlashFill = 6;{Заповнення \\\\\\\}

HatchFill = 7;{Заповнення +++++++}

XHatchFill = 8;{Заповнення ххххххх}

InterleaveFill= 9;{Заповнення прямокутну клітинку}

WideDotFill = 10;{Заповнення рідкісними крапками}

CloseDotFill = 11;{Заповнення частими крапками}

UserFill = 12;{Узор визначається користувачем}

Процедура SetFillPattern.

Встановлює зразок малюнка і колір штрихування. Заголовок:

Procedure SetFillPattern(Pattern: FillPatternType;Color: Word);

Тут Pattern - вираз типу FillPatternType; встановлює зразок малюнка для Fill - UserFill в процедурі SetFillStyle; Color - колір заповнення.

Зразок малюнка задається у вигляді матриці з 8x8 пікселів і може бути представлений масивом з 8 байт наступного типу:

type

FillPatternType = array [1..8] Byte;

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

Процедура GetFillPattern.

Повертає зразок заповнення, встановлений раніше процедурою SetFillPattern. Заголовок:

Procedure GetFillPattern(var Pattern: FillPatternType);

Тут Pattern - змінна типа FillPatternType, в якій повертається зразок заповнення.

Якщо програма не встановлювала зразок за допомогою процедури SetFillPattern, масив Pattern заповнюється байтами із значенням 255 ($FF).

Процедура GetFillSettings.

Повертає поточний стиль заповнення. Заголовок:

Procedure GetFillSettings(var Pattlnfo: FillSettingsType);

Тут Pattlnfo - змінна типа FillSettingsType, в якій повертається поточний стиль заповнення.

В модулі Graph визначений тип:

type

FillSettingsType = record

Pattern: Word; {Зразок}

Color : Word {Колір}

end;

Характеристики

Тип файла
Документ
Размер
2,63 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6531
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее