48055 (608443), страница 2
Текст из файла (страница 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;