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

Меню

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

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

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

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

МІНІСТЕРСВО ОСВІТИ І НАУКИ УКРАЇНИ

ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ

ФАКУЛЬТЕТ ФІТІС

КАФЕДРА КОМП’ЮТЕРНИХ СИСТЕМ

КУРСОВИЙ ПРОЕКТ

з дисципліни ”Програмування”

не тему: ”Побудова динамічно графіки”

ЧДТУ 03 ****.001 ПЗ

Пояснювальна записка

Керівник:                                                                              Виконав:   

асистент кафедри КС                                                           студент І-го курсу

Ярошевич Д.О.                                                                    групи КМ-311

                                                                                              Кулинич Євгеній

допущено до захисту:                                                          _______________

”___”_________2004р.                                                                          (підпис)

захищено з оцінкою:

_________________

”___”_________2004р.

_________________

(підпис)

Черкаси 2004


ЗМІСТ

1. Теоретичні відомості 2

2.     Блок-схема. 2

3.     Текст програми. 2

4.     Результати роботи програми. 2

1. Теоретичні відомості
  • Процедури і функції
  • Координати, вікна, сторінки
  • Багатокутники
  • Дуги, кола, еліпси
  • Фарби, палітри, заповнення
  • Збереження і видача зображень
  • Виведення тексту
  • Включення драйвера і шрифтів в тіло програми

Починаючи з версією 4.0, до складу Турбо Паскаля включена могутня бібліотека графічних підпрограм Graph, що залишається практично незмінною у всіх подальших версіях. Бібліотека містить в цілому більше 50 процедур і функцій, що надають програмісту найрізноманітніші можливості управління графічним екраном. Для полегшення знайомства з бібліотекою всі процедури і функції, що входять до неї, згруповані за функціональним принципом.  

·    Процедури функції

Процедура InitGraph. Ініціює графічний режим роботи адаптера.

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

Procedure InitGraph(var Driver,Mode: Integer; Path: String);

Тут Driver - змінна типу Integer, визначає тип графічного драйвера; Mode - змінна того ж типу, задаюча режим роботи графічного адаптера; Path - вираз типа String, що містить ім'я файлу драйвера і, можливо, маршрут його пошуку.

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

const

Detect=0;{Режим автовизначення  типу}

CGA=1;

MCGA=2;

EGA=3;

EGA64=4;

EGAMono=5;

IBM8514=6;

HercMono=7;

ATT400=8;

VGA=9;

PC3270=10;

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

const
{ Адаптер CGA : }
CGACO = 0; {Низьке розширення, палітра 0}
CGAC1 = 1; { Низьке розширення, палітра 1}
CGAC2 = 2; { Низьке розширення, палітра 2}
CGAC3 = 3; { Низьке розширення, палітра 3}
CGAHi = 4; { Високе розширення }
{Адаптер MCGA:}   
MCGACO = 0; {Емуляція CGACO}
MCGAC1 = 1; {Емуляція CGAC1}
MCGAC2 = 2; {Емуляція CGAC2}
MCGAC3 = 3; {Емуляція CGAC3}
MCGAMed = 4; {Емуляція CGAHi}
MCGAHi = 5; {640x480}
{Адаптер EGA :}   
EGALo = 0; {640x200, 16 кольорів}
EGAHi = 1; {640x350, 16 кольорів}
EGAMonoHi = 3; {640x350, 2 кольори}
{Адаптери HGC і HGC+:}
HercMonoHi = 0; {720x348}
{АдаптерАТТ400:}
ATT400CO = 0; {Аналог режиму CGACO}
ATT400C1 = 1; (Аналог режиму CGAC1}
ATT400C2 = 2; {Аналог режиму CGAC2}
ATT400C3 = 3; {Аналог режиму CGAC3}
ATT400Med = 4; {Аналог режиму CGAHi}
ATT400H1 = 5; {640x400, 2 кольори}

{Адаптер VGA:}

VGALo = 0;             {640x200}

VGAMed = 1;           {640x350}

VGAHi = 2;             {640x480}

PC3270H1 = 0;         {Аналог HercMonoHi}

{Адаптер 1ВМ8514}

IBM8514LO =0;       {640x480, 256 кольорів}

IBM8514H1 = 1;     {1024x768, 256 кольорів}

Нехай, наприклад, драйвер CGA.BGI знаходиться в каталозі TP\BGI на диску З і встановлюється режим роботи 320x200 з палітрою 2. Тоді звернення до процедури буде таким:

Uses Graph;  

var

Driver, Mode : Integer;  

begin

Driver := CGA;{Драйвер}

Mode := CGAC2;{Режим роботи}

InitGraph(Driver, Mode,' З:\TP\BGI');

.......

Якщо тип адаптера ПК невідомий або якщо програма розрахована на роботу з будь-яким адаптером, використовується звернення до процедури з вимогою автоматичного визначення типу драйвера:

Driver := Detect;

InitGraph(Driver, Mode, 'C:\TP\BGI');

Після такого звернення встановлюється графічний режим роботи екрану, а при виході з процедури змінні Driver і Mode містять цілочисельні значення, що визначають тип драйвера і режим його роботи. При цьому для адаптерів, здатних працювати в декількох режимах, вибирається старший режим, тобто той, що закодований максимальною цифрою. Так, при роботі з CGA -адаптером звернення до процедури із значенням Driver = Detect поверне  змінній Driver значення 1 (CGA) і в Mode -значення 4 (CGAHi), а також звернення до адаптера VGA поверне Driver = 9 (VGA) Mode = 2 (VGAHi).

Функція GraphErrorMsg.

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

Заголовок функції:

Function GraphErrorMsg(Code: Integer): String;

Тут Code - код помилки, що повертається функцією GraphResult.

Частіше за все причиною виникнення помилки при зверненні до процедури InitGraph є неправильна вказівка місцеположення файлу з драйвером графічного адаптера (наприклад, файлу CGA.BGI для адаптера CGA). Настройка на місцеположення драйвера здійснюється завданням маршруту пошуку потрібного файлу в імені драйвера при виклику процедури InitGraph. Якщо, наприклад, драйвер зареєстрований в підкаталоз DRIVERS каталога PASCAL на диску D, то потрібно використовувати виклик:

InitGraph(Driver, Mode, 'd:\Pascal\Drivers');

Процедура CloseGraph.

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

Заголовок:

Procedure CloseGraph;

Процедура RestoreCRTMode.

Слугує для короткочасного повернення в текстовий режим. На відміну від процедури CloseGraph не скидаються встановлені параметри графічного режиму і не звільняється пам'ять, виділена для розміщення графічного драйвера.

Заголовок:

Procedure RestoreCRTMode;

Функція GetGraphMode.

Повертає значення типу Integer, в якому міститься код встановленого режиму роботи графічного адаптера.

Заголовок:

Function GetGraphMode: Integer;

Процедура SetGraphMode.

Встановлює новий графічний режим роботи адаптера.

Заголовок:

Procedure SetGraphMode(Mode: Integer);

Тут Mode - код встановлюваного режиму.

Процедура DetectGraph.

Повертає тип драйвера і режим його роботи.

Заголовок:  

Procedure DetectGraph(var Driver,Mode: Integer);

Тут Driver - тип драйвера; Mode - режим роботи.

На відміну від функції GetGraphMode описувана процедура повертає  змінній Mode максимально можливий для даного адаптера номер графічного режиму.

Функція GetDriverName.

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

Function GetDriverName: String;

Функція GetMaxMode.

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

Заголовок:

Function GetMaxMode: Integer;

Функція GetModeName.

Повертає значення типу String, що містить розширення екрану і ім'я режиму роботи адаптера по його номеру.

Заголовок:

Function GetModName(ModNumber: Integer): String;

Тут ModNumber - номер режиму.

Процедура GetModeRange.

Повертає діапазон можливих режимів роботи заданого графічного адаптера. Заголовок:

Procedure GetModeRange(Drv: Integer; var Min, Max: Integer);

Тут Drv - тип адаптера; Min - змінна типа Integer, в якій повертається нижнє можливе значення номера режиму; Мах - змінна того ж типу, верхнє значення номера.

·    Координати, вікна, сторінки

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

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


Новости

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

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

Пока нет

Новости в Twitter и Facebook

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

Новости

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

© 2010.