Рефераты. Побудова динамічної графіки

Багато графічних процедур і функції використовують покажчик поточної позиції на екрані, який на відміну від текстового курсора невидимий. Положення цього покажчика, як і взагалі будь-яка координата на графічному екрані, задається щодо лівого верхнього кута, який, у свою чергу, має координати 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);

Тут 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;

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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.