Багато графічних процедур і функції використовують покажчик поточної позиції на екрані, який на відміну від текстового курсора невидимий. Положення цього покажчика, як і взагалі будь-яка координата на графічному екрані, задається щодо лівого верхнього кута, який, у свою чергу, має координати 0,0. Таким чином, горизонтальна координата екрану збільшується зліва направо, а вертикальна - зверху вниз.
Функції GetMaxX і GetMaxY.
Повертають значення типу Word, що містять максимальні координати екрану в поточному режимі роботи відповідно по горизонталі і вертикалі.
Функції GetX і GetY.
Повертають значення типу Integer, що містять поточні координати покажчика відповідно по горизонталі і вертикалі. Координати визначаються щодо лівого верхнього кута вікна або, якщо вікно не встановлено, екрану.
Процедура SetViewPort.
Встановлює прямокутне вікно на графічному екрані.
Заголовок:
Procedure SetViewPort(XI,Y1,X2,Y2: Integer; ClipOn: Boolean);
Тут X1...Y2 - координати лівого верхнього (XI,Y1) і правого нижнього (X2,Y2) кутів вікна; СНрОп - вираз типа Boolean, що визначає «відсічення» елементів зображення, що не уміщаються у вікні.
Координати вікна завжди задаються щодо лівого верхнього кута екрану. Якщо параметр ClipOn має значення True, елементи зображення, що не уміщаються в межах вікна, відсікаються, інакше межі вікна ігноруються. Для управління цим параметром можна використовувати такі певні в модулі константи:
const
ClipOn = True; {Включити відсічення}
ClipOff = False; {He включати відсічення}
Процедура GetViewSettings.
Повертає координати і ознаку відсічення поточного графічного вікна.
Procedure GetViewSettings(var Viewlnfo: ViewPortType);
Тут Viewlnfo - змінна типа ViewPortType. Цей тип в модулі Graph визначений таким чином:
type
ViewPortType = record
x1,y1,x2,y2: Integer; {Координати вікна}
Clip : Boolean {Ознака відсічення}
end ;
Процедура MoveTo.
Встановлює нове поточне положення покажчика.
Procedure MoveTo(X,Y: integer);
Тут X, Y - нові координати покажчика відповідно по горизонталі і вертикалі.
Координати визначаються щодо лівого верхнього кута вікна або, якщо вікно не встановлено, екрану.
Процедура MoveRel.
Встановлює нове положення покажчика у відносних координатах.
Procedure MoveRel(DX,DY: Integer);
Тут DX,DY- прирости нових координат покажчика відповідно по горизонталі і вертикалі.
Прирости задаються щодо того положення, яке займав покажчик до моменту звернення до процедури.
Процедура ClearDevice.
Очищає графічний екран. Після звернення до процедури покажчик встановлюється в лівий верхній кут екрану, а сам екран заповнюється кольором фону, заданим процедурою SetBkColor.
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);
Процедура може використовуватися тільки з адаптерами, що підтримують багатосторінкову роботу (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: перше визначає горизонтальну, друге - вертикальну координати. Для них можна використовувати наступний певний в модулі тип:
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 таким чином:
ArcCoordsType = record
X,Y : Integer; {Координати центру}
Xstart,Ystart: Integer; {Початок дуги}
Xend,Yend : Integer; {Кінець дуги}
Процедура 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;
Страницы: 1, 2, 3, 4, 5