Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 1772 Лабораторна робота 8 на тему Робота з графікою

Лабораторна робота 8 на тему Робота з графікою

« Назад

Лабораторна робота № 8

Робота з графікою

Мета роботи: Оволодіння методами роботи у графічному режимі.

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

Мова програмування С має окрему бібліотеку графічних функцій, що підтримують чисельні стилі ліній та заповнювачів, а також надають різні текстові шрифти, які можна змінювати за розміром, способом вирівнювання, а також орієнтувати їх горизонтально або вертикально. Оскільки графічні функції використовують вказівники far, то для їх використання треба переключитися у модель пам'яті, що використовує такі вказівники (моделі far, huge).

Графічні функції знаходяться у бібліотечному файлі graphics.lib, а їх прототипи — у файлі заголовку graphics.h. Крім цих двох файлів у склад графічного пакета входять драйвери графічних пристроїв (файли *.bgi) та символьні шрифти (*.chr).

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

Для запуску графічного режиму треба перш за все викликати функцію initgraph(), що переводить систему у графічний режим. Можна вказати конкретний графічний драйвер або використати можливість автодетектування встановленого відеоадаптера та вибір відповідного драйвера під час виконання програми.

Для завершення роботи у графічному режимі потрібно викликати функцію closegraph(), яка встановлює початковий текстовий режим.

Графічні функції поділяються на декілька категорій:

1) керування графічною системою 

initgraph() — ініціалізує графічну систему та переводить апаратне забезпечення у графічний режим;

detectgraph() — перевіряє апаратне забезпечення та визначає, які графічні драйвери використовувати, та визначає рекомендований режим;

closegraph() — закриває графічну систему;

installuserdriver() — встановлює додатковий драйвер пристрою у таблицю драйверів пристроїв bgi; 

2) креслення та заповнення 

circle() — креслить коло;

drawpoly() — креслить контур багатокутника;

ellipse() — креслить еліптичну дугу;

line() — креслить лінію;

bar3d() — креслить та заповнює трьохмірний стовбчик;

setfillpattern() — вибирає шаблон заповнення, визначений користувачем; 

3) маніпулювання екранами та графічними вікнами 

cleardevice() — очищує графічний екран;

setviewport() — встановлює область перегляду для графічного виводу; 

4) вивід тексту 

outtext() — посилає рядок на екран у поточну позицію;

settextstyle() — встановлює шрифт, стиль та коефіцієнт збільшення поточного шрифту;

textwidth() — повертає ширину рядка у пікселях; 

5) керування кольорами;

6) обробки помилок;

7) запит стану. 

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

8.2. Приклад

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

#include <graphics.h>

#include <math.h>

#include <bios.h> 

int x0, y0; 

void main()

{

int x, y;

int gdriver = DETECT, gmode, errorcode; 

initgraph(&gdriver, &gmode, "g:\\bc31\\bgi");

x0=getmaxx()/2;

y0=getmaxy()/2;

setcolor(2);

line(x0, 0, x0, getmaxy());

line(0, y0, getmaxx(), y0);

for(x=-x0;x<=x0;x++)

for(y=-y0;y<=y0;y++)

if((x*x+y*y)<=2*(abs(x)+abs(y)))

putpixel(x+x0, y+y0, 15);

else putpixel(x+x0, y+y0, 0);

setcolor(2);

line(x0, 0, x0, getmaxy());

line(0, y0, getmaxx(), y0);

if(bioskey(0)==283) closegraph();

} 

8.3. Порядок виконання роботи

8.3.1. Проаналізувати умову задачі.

8.3.2. Розробити алгоритм та створити програму розв’язання задачі згідно з номером варіанту. Дослідити поведінку функцій при різних значеннях параметру.

8.3.3. Результати роботи оформити протоколом.

8.4. Варіанти завдань

Дослідити область визначення функцій та побудувати їх графіки для довільних значень параметрів на заданому інтервалі. (Інтервал та параметри задаються інтерактивно.)

1) Елліпс з великою та малою напівосями, рівними  та  відповідно, та розташованими паралельно осям координат: , , .

2) Равлик Паскаля. Розглянути випадки, коли .

3) Кардіоїда.

4) Епіциклоїда. Розглянути наступні випадки:

- якщо  є цілим позитивним числом, ;

- якщо , де  та  — позитивні цілі взаємно прості числа, .

5) Астроїда.

6) Циссоїда.

7) Строфоїда.

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

8.5. Контрольні запитання

1. Як реалізується ініціалізація та закриття графічного режиму? Обробка помилок.

2. Які ви знаєте функції керування кольором, палітрою, відеосторінкою?

3. Як визначаються координати точок на екрані?

4. Як виводиться текст у графічному режимі відеоадаптера (бітовий та сегментований типи шрифтів)?

5. В чому полягає специфіка виведення графічної інформації?

Література

1. Visual C++ и MFC. Программирование для Windows NTÔ и WindowsÒ 95: В трех томах. Том 1. — СПб.: BHV. — Санкт-Петербург, 1997. — 464 с.

2. Visual C++ и MFC. Программирование для Windows NTÔ и WindowsÒ 95: В трех томах. Том 2. — СПб.: BHV. — Санкт-Петербург, 1997. — 464 с.

3. Visual C++ и MFC. Программирование для Windows NTÔ и WindowsÒ 95: В трех томах. Том 3. — СПб.: BHV. — Санкт-Петербург, 1997. — 450 с.

4. Профессиональное программирование на языке Си: от Turbo C к Borland C++: Справ. пособие; Под общ. ред. А.И. Касаткина. — Мн.: Выш. Шк., 1992. — 240 с.

5. Керниган Б., Ритчи Д. Язык программирования Си: Пер. с англ./ Под ред. и с предисл. Вс.С. Штаркмана. — 2-е изд., перераб и доп. — М.: Финансы и статистика, 1992. — 272 с.

6. Язык программирования Си для персонального компьютера. — М.: Радио и связь, 1990. — 384 с.

7. Язык Си для профессионалов. — М.: И.В.К. – Софт, 1991. — 384 с.

8. Уинер Р. Язык Турбо Си: пер. с англ. — М.: Мир, 1991. — 384 с.

ДОДАТОК 

ВИМОГИ ДО ОФОРМЛЕННЯ ПРОТОКОЛІВ ЛАБОРАТОРНИХ РОБІТ 

Протоколи оформлюються на окремих форматних листках в порядку, що відповідає номерам лабораторних робіт та мають містити наступні відомості: 

1. Назва лабораторної роботи.

2. Мета роботи.

3. Стислі теоретичні відомості по темі роботи.

4. Аналіз умови задачі.

5. Опис всіх змінних та функцій за формою: 

Ім'я змінної

Тип

Призначення

 

 

 

 

Ім'я

Призначення

Тип змінної,

Параметри

функції

функції

щоповертається

Ім'я

Тип

Призначення

1. Алгоритм розв'язання задачі.

2. Висновки по роботі.

3. Роздруковки програми та результатів її роботи.

З повагою ІЦ "KURSOVIKS"!