скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКурсовая работа: Побудова динамічної графіки

Координати точок зламу задаються парою значень типа 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;

Поля Pattern Color в цьому, записі мають те ж призначення, що і аналогічні параметри при зверненні до процедури SetFillStyle.

Процедура SetRGBPalette.

Встановлю колірну гамму при роботі з дисплеєм IBM 8514 і адаптером VGA. Заголовок:

Procedure SetRGBPalette(ColNum,RedVal, GreenVal,BlueVal:Integer);

Тут ColNum - номер кольору; RedVal, GreenVal, BlueVal - вирази типу Integer, що встановлюють нтенсивність відповідно червоній, зеленій і сині складових кольору.

Ця процедура може працювати тільки з дисплеєм IBM 8514, а також з адаптером VGA, що використову відеопам'ять об'ємом 256 Кбайт. В першому випадку параметр ColNum задається числом в діапазоні 0...255, в другому - в діапазоні 0...15. Для установки нтенсивності використовуються 6 старших розрядів молодшого байта будь-якого з параметрів RedVal, GreenVal, BlueVal.

Процедура FloodFill.

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

Procedure FloodFill(X,Y: Integer; Border: Word);

Тут X, Y- координати будь-якої точки всередині замкнутої фігури; Border - колір гранично лінії.

Якщо фігура незамкнута, заповнення «розіллється» по всьому екрану.

Слід врахувати, що реалізований в процедурі алгоритм проглядання меж замкнутої фігури не відрізняється досконалістю. Зокрема, якщо виводяться підряд два порожні рядки, заповнення припиняється. Така ситуація звичайно виникає при заповненн невеликих фігур з використанням типу LtSlashFill. У фірмовому керівництві по Турбо Паскалю рекомендується, по можливості, замість процедури FloodFill використовувати FillPoly (заповнення прямокутника).

Процедура Bar.

Заповню прямокутну область екрану.

Заголовок:  

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

Тут XJ...Y2 - координати лівого верхнього (X1, Y1) і правого нижнього (Х2, Y2) кутів закрашуваної області.

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

Процедура Ваr3D.

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

Procedure Ваr3D (X1,Y1,X2,Y2,Depth: Integer; Top: Boolean);

Тут X1... Y2 - координати лівого верхнього (X1, Y1) і правого нижнього (Х2, Y2) кутів передньої грані; Depth - третє вимірювання тривимірного зображення («глибина») в пікселях; Тор - спосіб зображення верхньої грані.

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

const

TopOn = True;  

TopOff = False;

При викреслюванн використовується поточний стиль ліній (SetLineStyle) і поточний колір (SetColor). Передня грань заливається поточним стилем заповнення (SetFillStyle).

Процедура звичайно застосовується при побудові стовпчикових діаграм. Слід врахувати, що паралелепіпед «прозорий», тобто за його незакрашеними гранями можуть бути видн нші елементи зображення.

Процедура Fill Poly.

Обводить лінією закрашує замкнутий багатокутник.

Заголовок:

Procedure FillPoly(N: Word; var Coords);

Тут N - кількість вершин замкнутого багатокутника; Coords - змінна типа PointType, що містить координати вершин.

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

type

PointType = record

х, у : Integer  

end;

Стиль і колір лінії контура задаються процедурами SetLineStyle і SetColor, тип і колір заливки - процедурою SetFillStyle.

Процедура FillEllipse.

Обводить лінією заповнює еліпс.

Заголовок:

Procedure FillEllipse(X,Y,RX,RY: Integer);

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

Еліпс обводиться лінією, заданою процедурами SetLineStyle і SetColor, і заповнюється з використанням параметрів, встановлених процедурою SetFillStyle.

Процедура Sector.

Викреслю заповнює еліпсний сектор.

Заголовок:

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

Тут BegA, EndA - відповідно початковий і кінцевий кути еліпсного сектора. Решта параметрів обігу аналогічна параметрам процедури FillEllipse.

Процедура PieSlice.

Викреслю заповнює сектор кола.

Заголовок:  

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

На відміну від процедури Sector, указується лише один горизонтальний радіус R, решта параметрів аналогічна параметрам процедури Sector.

·    Збереження видача зображень

Функція ImageSize.

Поверта розмір пам'яті в байтах, необхідний для розміщення прямокутного фрагмента зображення.

Заголовок:

Function ImageSize(X1,Y1,X2,Y2: Integer): Word;

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

Процедура Getlmage.

Поміщає в пам'ять копію прямокутного фрагмента зображення.

Заголовок:

Procedure Getlmage(X1,Y1,X2,Y2: Integer; var Buf)

Тут X1...Y2 - координати кутів фрагмента зображення; Buf - змінна або ділянка купи, куди буде поміщена копія відеопам'яті з фрагментом зображення.

Розмір Buf повинен бути не менше значення, що повертається функцією ImageSize з тими ж координатами X1....Y2.

Процедура Put Image.

Виводить в задане місце екрану копію фрагмента зображення, раніше поміщену в пам'ять процедурою Getlmage.

Заголовок:

Procedure Putlmage(X,Y: Integer; var Buf; Mode: Word);

Тут X,Y- координати лівого верхнього кута того місця на екрані, куди буде скопійований фрагмент зображення; Buf - змінна або ділянка купи, звідки береться зображення; Mode - спосіб копіювання.

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

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

Страницы: 1, 2, 3


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.