Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Та програмування

Та програмування




Сторінка2/11
Дата конвертації10.03.2017
Розмір2.35 Mb.
1   2   3   4   5   6   7   8   9   10   11

pc32070.bgi драйвер для IBM 3270 PC;

ibm8514.bgi драйвер для IBM 8514.


Вказаний вище набір файлів потрібно мати при складанні програм, які будуть працювати практично на всіх ПЕОМ, сумісних з платформою IBM. Якщо розробка програмного забезпечення виконуєься для заданого типу графічного адаптера, то достатньо мати один файл цього адптера.
Відеока́рта (англ. video card, також графічна карта, графічний адаптер, графічний прискорювач) - пристрій, призначений для обробки і генерації зображень з подальшим їхнім виведенням на екран периферійного пристрою.
Розробка програмного забезпечення (англ. software engineering, software development) - це рід діяльності (професія) та процес, спрямований на створення та підтримку працездатності, якості та надійності програмного забезпечення, використовуючи технології, методологію та практики з інформатики, керування проектами, математики, інженерії та інших областей знання.

Всі процедури і функціі бібліотеки graphics.h можна розбити на 7 функціональних груп:



  1. Керування графічними режимами та їх аналіз:

detectgraph(), initgraph(), closegraph(), graphdefaults(), cleardevice(), installuserdrive(), restorecrtmode(), setgraphmode(), setwritemode(), getgraphmode(), getmoderange(), getmaxmode(), getmodename(), getdrivername(), graphresult(), grapherrormsg();

2. Креслення графічних примітивів і фігур:

– управління «поточним вказівником»: moveto(), moverel(), getmaxx(), getmaxy(), getx(), gety();

Кре́слення - дисципліна зі створення стандартизованих технічних малюнків, що виконуються фахівцями інженерами, архітекторами тощо.

– рисування графічних примітивів: line(), lineto(), linerel(), arc(), getarccoords(), circle(), sector(), ellipse(), rectange(), drawpoly();

– управління стилем ліній і коефіцієнтом стиснення зображення: sellinestyle(), getlinesettings(), setaspectratio(), getaspectratio();

Коефіціє́нт - характеристика процесу, явища, речовини або поля, яка має відносно сталий характер.
Сти́снення зобра́жень - використання алгоритмів стиснення даних до зображень, що зберігаються в цифровому виді. В результаті стиснення зменшується розмір зображення, що зменшує час передачі зображення по мережі і економить простір для зберігання.

– управління кольором і шаблоном заповнення: setcolor(), getcolor(), setbkcolor(), getbkcolor(), getmaxcolor(), getpalette(), getpalettesize(), getdefaultpalette(), setpalette(), setallpalette(), setrgbpalette(), setfillstyle(), setfillpattern(), getfillpattern(), getfillsettings(), fillpoly(), fillellipse(), floodFill(), pieslice(), bar(), bar3d().

3. Виконання бітових операцій: putpixel(), getpixel(), imagesize(), getimage(), putimage().

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

4. Управління відеосторінками: setactivepage(), setvisualpage();

5. Управління графічними вікнами: setviewport(), getviewsettings(), clearviewport().

6. Управління виведенням тексту: installuserfont(), outtext(), outtextxy(), settextstyle(), settextjustity(), setusercharsize(), gettextsettings(), textheight(), textwidth().


Функція ініціалізації:

initgraph(int gdriver[тип адаптера], int gmode[режим графіки], char[30] driverpath[шлях до драйвера ]).


В бібліотеці graphics.h визначені сталі для задання виду графічного адаптера gdriver перед викликом функції initgraph():

DETECT=0 автовизначення;



CGA=1 адаптер CGA;

MCGA=2 адаптер MCGA;

EGA=3 адаптер EGA на 256 К;

EGA64=4 адаптер EGA на 64 К;

EGAMONO=5 EGA з монодисплеєм;



IBM8514=6 адаптер 8514;

Herc Mono=7 адаптер Hercules;

ATT400=8 адаптер для ПОЕМ AT8T;

VGA=9 адаптер VGA;

PC3270=10 адаптер 3270;

Current Driver=-128 для GET ModeRANGE.


Якщо параметр gdriver=detect, то система вмикається в режим автовизначення. Якщо параметр gdriver містить номер конкретного адаптера, то і другий параметр gmode повинен приймати значення автоматично (номер режиму, дозволеного при даному адаптері). Якщо параметр driverpath ="", то драйвери повинні знаходитися в поточному каталозі (альтернативно можна вказати шлях до драйверів, наприклад, С:\Study\TC\BGI\).
Лістинг 1.1. Приклад виклику функції ініціалізації, що використовується найчастіше
#include

int main () {

int gdriver, gmode; // gdriver – для графічного драйвера,

//gmode – для графічного режиму

gdriver=DETECT; // режим автовизначення

initgraph (&gdriver,&gmode,""); // ініціалізація графіки

closegraph (); // вивантаження графічного драйвера з

//пам’яті

return 0;

}
Лістинг 1.2. Процедура ініціалізації графічного режиму з урахуванням обробки помилок ініціалізації


#include

#include

#include

#include

void main()

{

int gdriver=DETECT, gmode, errorcode;



initgraph(&gdriver,&gmode,"");

errorcode=graphresult(); // результат ініціалізації

/* якщо при ініціалізації виникла помилка */

if (errorcode!=grOk)

{ printf("Помилка графіки:

%s\n",grapherrormsg(errorcode));

printf("Натисніть будь-яку клавішу:”);

Клавіша, також клавіш (англ. key) - пластинка для передавання дії від пальців рук до пристрою, механізму.

getch();


exit(1);

}

line(0,0,getmaxx(),getmaxy());// робота з графікою (рисування



//лінії)

getch(); // затримка екрана (до натиснення будь-якої

//клавіші)

closegraph();

return 0;

}
Якщо у робочому каталозі не знайдено відповідних графічних драйверів (файлів з розширенням .BGI), то на екрані з’явиться таке вікно:



Рисунок 1.1 – Зображення вікна при помилці
На рисунку 1.2 показано вікно, що з’явиться на екрані при успішному виконанні програми.

Очищення графічного режиму виконується функцією cleardevice(). Дана функція очищає графічний екран і встановлює вказівник позиції в положення (0,0).

Поло́ження - нормативно-правовий або локально-правовий акт, що визначає основні правила організації та діяльності державних органів, структурних підрозділів органу, а також установ, організацій і підприємств (філій), що їм підпорядковуються, тимчасово створюваних комісій, груп, бюро і т. ін.
В прикладі 1.3 показана організація переходу з графічного режиму в текстовий і в зворотному напрямку (зручно використовувати в складних прикладних програмах, ща працюють в цих режимах).




Рисунок 1.2 – Зображення вікна при успішному виконанні програми
Лістинг 1.3. Перехід з графічного режиму в текстовий
#include

#include

#include

#include


int main () {

int gdriver=DETECT, gmode, errorcode;

int x,y;

clrscr ();

initgraph(&gdriver, &gmode, "");

errorcode=graphresult();

if (errorcode!=grOk) {

printf ("Graphics error: %s\n",

grapherrormsg(errorcode));

printf ("Press any key to halt...");

getch ();

exit (1);

}
x=getmaxx ()/2;

y=getmaxy ()/2;


// виведення повідомлення на екран

settextjustify (CENTER_TEXT, CENTER_TEXT);

outtextxy (x,y, "Press any key for exit graphic's mode...");

getch ();

restorecrtmode (); // перехід в текстовий режим
// виведення повідомлення

printf ("TEXT MODE\n");

printf ("Press any key for return graphic's mode...");

getch ();


// повернення в графічний режим

setgraphmode(getgraphmode());


// виведення повідомлення

settextjustify (CENTER_TEXT, CENTER_TEXT);

outtextxy (x,y,"GRAPHICS MODE");

outtextxy (x,y textheight ("W"), "Press any key for exit...");

getch ();

closegraph ();

return 0;

}
Як видно з прикладу, перехід з графічного режиму в текстовий за допомогою функції restorecrtmode() відбувається достатньо просто. Зворотнє ввімкнення графічного режиму здійснюється за допомогою функції getgraphmode(), яка повертає номер поточного графічного режиму. При роботі функції restorecrtmode() вивантаження графічного драйвера не відбувається, оскільки він залишається в пам'яті активним. Це і є основна перевага функції restorecrtmode().


1.2 Функції рисування графічних примітивів

Лінії і точки:

– функція виведення лінії (відрізка) на екран (в поточному кольорі і стилі) line (int x1, int y1, int x2, int y2), де (х1,у1) – координати початку, а (х2, у2) – координати кінця відрізка;

– функція виведення лінії з поточної точки в точку з заданими координатами: lineto (int x, int y); (відносно поточної позиції). Положення поточного вказівника приймається за початок координат (0,0) і вказується місце розташування кінця відрізка;

Система координат - спосіб задання точок простору за допомогою чисел. Кількість чисел, необхідних для однозначного визначення будь-якої точки простору, визначає його вимірність. Обов'язковим елементом системи координат є початок координат - точка, від якої ведеться відлік відстаней.
Координати (рос. координаты, англ. coordinates; нім. Koordinaten f pl) - числа, величини, що визначають положення точки у просторі.
Початок координат - точка, де осі системи координат перетинаються. Початок координат поділяє кожну вісь системи на дві половини: позитивну та від'ємну.

– функція виведення лінії з поточного положення вказівника до положення, заданого приростом його координат linerel (int dx, int dy), де dx, dy – приріст координат нового положення вказівника; виведення точки за координатами (х, у) заданого кольору – putpixel (int x, int y, int color).
Кола, еліпси, дуги:

– для креслення кіл використовується функція circle (int x, int y, int radius); де x, у – координати центра кола, radius – радіус кола;

– креслення дуги радіуса radius із центром з координатами (х,у) від кута stangle до endangle (в градусах): arc (int x, int y, int stangle, int endangle, int radius).

– креслення еліптичної дуги з аналогічними параметрами ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); де xradius і yradius – розміри горизонтальної та вертикальної півосей відповідно.

Положення напрямку осі х (зліва-направо) приймають за 0 градусів, від'ємний напрямок осі у – за 90 градусів, оскільки проти годинникової стрілки.

Пара́метр (від дав.-гр. παραμετρέω) - відмірюю, розмірюю)(рос. параметр, англ. parameter, нім. Parameter m, Kennwert m, Kenngrösse f, Kennzahl f) - величина, що нею характеризують якусь властивість, стан, розмір або форму об'єкта, робочого тіла, процесу, явища або системи тощо.
Горизонталь, ізогіпса (англ. contour lines, horizontal, isohyps, нім. Höhenkurve f, Horizontale f; рос. горизонталь, изогипса; від дав.-гр. ισος - равний і дав.-гр. ὕψος - висота) - лінія на плані (карті), яка з'єднує точки земної поверхні з однаковою абсолютною висотою.
Годинник (арх.: дзиґа́р, дзиґарі́) - пристрій для вимірювання часу.

Побудова прямокутників і ламаних:

– креслення прямокутника: rectangle (int left, int top, int right, int bottom), де (left, top), (right, bottom) – координати початку і кінця діагоналі.

Прямоку́тник - це чотирикутник, усі кути якого прямі. Протилежні сторони прямокутника рівні. Є окремим випадком паралелограма.
Прямокутник рисується з використанням поточного кольору і поточного стилю ліній;

– функція bar (int left, int top, int right, int bottom) рисує прямокутник, внутрішня частина якого залита за поточним шаблоном. Вона використовується в діловій графіці для побудови стовпцевих діаграм;

– функція побудови паралелепіпеда – bar3d (int left, int top, int right, int bottom, int depth, int topflag).


Побудова ламаних

Щоб побудувати фігури з великою кількістю вершин, використовують функцію drawpoly(int numpoints, const int *polypoints).

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

Паралелепі́пед (від грец. παράλλος - паралельний і επιπεδον - площина) - призма, основою для якої є паралелограм.
Геометричний стиль, або Геометрика - тип давньогрецького вазопису, характерний для доби кінця «темних віків в Греції» близько 900-700 років до н. е. Геометричний стиль витіснив протогеометричний стиль.
Матема́тика (грец. μάθημα - наука, знання, вивчення) - наука, яка первісно виникла як один з напрямків пошуку істини (у грецькій філософії) у сфері просторових відношень (землеміряння - геометрії) і обчислень (арифметики), для практичних потреб людини рахувати, обчислювати, вимірювати, досліджувати форми та рух фізичних тіл.
Фу́нкція (відображення, трансформація, оператор) в математиці - це правило, яке кожному елементу з першої множини (області визначення) ставить у відповідність один і тільки один елемент з другої множини.
Фігура - термін, формально застосовуваний до довільної множини точок; тим не менш зазвичай фігурою називають множину точок на площині, які обмежені скінченим числом ліній. Наприклад: квадрат, коло, кут.

Параметр numpoints визначає кількість точок, за якими будується ламана (причому, якщо необхідно нарисувати замкнений багатокутник з N вершинами, то значення кількості точок повинно бути на 1 більше N, n-координата (N 1)-ої точки повинна бути така ж, як координата першої).

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


1.3 Встановлення кольорів ліній і фону
Різні адаптери підтримують різну кількість кольорів, які виводять одночасно на екран в графічному режимі, але для всіх BGI драйверів ця кількість обмежена діапазоном 0...
Діапазо́н (від грец. δϊα πασον (χορδων) - через усі (струни).
15:

Black чорний – 0;

blue синій – 1;

grеen зелений – 2;

суаn блакитний – 3;

rеd червоний – 4;

magenta фіолетовий – 5;

brown коричневий – б;

lіghtgrау яскраво-сірий – 7;

darkgrеу темносірий – 8;

lightblue яскраво-синій – 9;

lіghtgreen яскраво-зелений – 10;

lightcyal яскраво-блакитний – 11;

lightred яскраво-червоний – 12;

lightmagenta яскраво-фіолетовий – 13;

ye11оw жовтий – 14;

white білий – 15.
Максимальний номер кольору, що сприймається даним адаптером в поточному графічному режимі, може бути визначений за допомогою функції getmaxcolor(void).

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

На екрані завжди розрізняють колір фону і колір ліній. Всі функції креслення фігур, якщо не містять в собі явного встановлення кольору, рисують фігури кольором ліній (як символи в текстовому режимі). Цей колір встановлюється функцією setcolor(int color). Колір фону встановлюється функцією setbkcolor(int color). Після використання цієї функції колір фону екрана одразу ж змінюється на заданий, параметр color<=getmaxcolor(). За замовчуванням колір фону = 0 (Black).


1.4 Керування стилем ліній, палітрою, штрихуванням
При кресленні лінії можна змінювати такі параметри:

- товщину лінії;

- тип лінії (пунктирні лінії, суцільні тощо).
В бібліотеці graphics.h визначені такі типи і сталі стилів зображених ліній:

void setlinestyle(int linestyle, unsigned upattern, int thickness);

linestyle – стиль

upattern – шаблон

thickness – товщина
Для значень параметра LineStyle:

SOLID_LINE=0 суцільна лінія (візерунок відсутній);

DOTTED_LINE=1 крапкова лінія-суцільна штрихова;

CENTER_LINE=2 штрихпунктирна лінія;

DASHED_LINE=3 пунктирна лінія;

USERBIT_LINE=4 тип лінії заданий дійсним шаблоном.


Для значень параметра Thickness:

NORM_WIDTH=1 товщина лінії в 1 піксел;

THICK_WIDTH=3 товщина лінії в 3 піксела.
Отримати інформацію про поточний стиль ліній можна за допомогою функції:

getlinesettings(struct linesettingstype far *lineinfo);


Лістинг 1.4. Рисування ліній різних типів

#include o.h>

#include

#include

#include

#include
int main () {

int gdriver=DETECT, gmode, errorcode;

int style, midx, midy, userpat;

char stylestr [40];
/* масив назв стилів ліній */

char *lname[]={

"SOLID_LINE",

"DOTTED_LINE",

"CENTER_LINE",

"DASHED_LINE",

"USERBIT_LINE"

};

clrscr ();

initgraph (&gdriver, &gmode, "");

errorcode=graphresult();

if (errorcode!=grOk) {

printf ("Graphics error: %s\n", grapherrormsg(errorcode));

printf ("Press any key to halt...");

getch ();

exit (1);

}

midx=getmaxx ()/2;

midy=getmaxy ()/2;
// вибір палітри

userpat=1;

for (style=SOLID_LINE; style<=USERBIT_LINE; style ) {
// вибір стилю ліній

setlinestyle (style, userpat, 1);
// конвертація змінної style в тип string

strcpy (stylestr, lname[style]);
// рисування лінії

line (0,0, midx-10, midy);
// рисування прямокутника

rectangle (0,0, getmaxx (), getmaxy ());
// виведення повідомлення

outtextxy (midx, midy, stylestr);

getch ();

cleardevice();

}

closegraph ();

return 0;

}
На рисунках 1.3, 1.4 показаний результат роботи даної програми.












Рисунок 1.3 – Рисування суцільної лінії

Рисунок 1.4 – Рисування лінії з точок
1   2   3   4   5   6   7   8   9   10   11



  • Креслення
  • Current Driver
  • Рисування суцільної лінії Рисунок 1.4 – Рисування лінії з точок