Программирование в СИ - Лабораторная работа

бесплатно 0
4.5 40
Инициализация графического драйвера и режима. Функции доступа к видеопамяти. Подключение графической библиотеки. Инициализация графического режима. Включение драйвера, шрифтов в исполняемый файл. Рисование геометрических фигур. Вывод числовой информации.


Аннотация к работе
В самых общих чертах работа с дисплеем ПК в графическом режиме может быть представлена следующим образом. Экран дисплейного монитора представляется как набор отдельных точек - пикселей (pixels, от английского picture elements), образующий прямоугольный растр. Эта область, называемая видеопамятью, как правило, является частью дисплейного адаптера (видеоадаптера) - специального устройства, управляющего работой монитора. Причем изображение каждого пикселя определяется текущим значением его атрибута. Если каждый пиксель в графическом режиме представляется n битами, то в таком режиме имеется возможность одновременно представить на экране N_pallette=2n оттенков цвета (палитра режима).Прототип этой функции - void far detectgraph(int far *graph_driver,int far *graph_mode); Если этой функции передать значение, возвращаемое функцией graphresult, то можно получить сообщение о коде завершения последней графической функции. Простейшим способом включения драйвера в программу является его автоматическая загрузка при помощи функции initgraph с прототипом void initgraph(int far *graph_driver,int far *graph_mode,char far *path_to_bgi); Функция initgraph ищет на диске BGI-файл, содержащий требуемый драйвер, загружает файл целиком в динамически выделяемую память и настраивает ядро системы на работу с этим драйвером. detectgraph(&gd,&gm); /* определение номера драйвера и режима */ err=graphresult(); /* получение кода завершения */ if(err) {printf(“

%s”,grapherrormsg(err)); return 1; } initgraph(&gd,&gm,”c:\\borlandc\\bgi”); /* инициализация системы */ err=graphresult(); /* получение кода завершения */ if(err) {printf(“

%s”,grapherrormsg(err)); return 2; }Чтобы в прикладной программе иметь возможность отобразить на экране любую из имеющихся страниц видеопамяти, в графической библиотеке предусмотрена функция void far setvisualpage(int page); Функция void far setactivepage(int page); Левая верхняя точка страницы имеет координаты (0, 0), правая нижняя - координаты (M-1, N-1), где M и N - размеры страниц по горизонтали и вертикали. Начало этой системы координат находится в левом верхнем углу графического окна, а оси X и Y параллельны соответствующим осям координат страницы. В дальнейшем при описании таких функций всегда будет указываться, какая система координат (страницы или окна) имеется в виду.где size - это число строк внутренней палитры, разрешенное для использования в текущем графическом режиме, а colors - массив закодированных описаний цвета. Для всех монохромных режимов и режимов с фиксированными палитрами допускается использование во внутренней палитре 16 цветов, которые в точности совпадают со стандартными цветами текстового режима. В режимах с динамическим управлением внутренняя палитра содержит 16 цветов, коды которых могут лежать в диапазоне от 0 до 63 Для 16 кодов цветов стандартного набора, устанавливаемых при инициализации этих режимов (как для драйвера EGA, так и VGA), определен перечислимый тип EGA_COLORS, т. е. стандартные коды цветов имеют символические имена: enum EGA_COLORS Аргумент color задает новое значение кода цвета для этого входа в диапазоне от 0 до 63 (реально используются только шесть младших бит аргумента num_color).Доступ к отдельным пикселям активной страницы осуществляют две функции: unsigned far getpixel(int x,int y); Функция getpixel возвращает атрибут (вход во внутреннюю палитру) пикселя с координатами (x, y). А функция putpixel рисует пиксель в точке с координатами (x, y) цветом, чей код содержится по входу во внутреннюю палитру с номером num_color_palette. Несмотря на то, что функциям getpixel и pupixel координаты пикселя задаются в системе координат графического окна, ничто не мешает указать координаты любого пикселя страницы, лежащего вне окна. Результаты работы функций getpixel и pupixel с выходящими за пределы страницы координатами точек непредсказуемы.К группе контурных графических примитивов относятся функции: void far line(int x1,int y1,int x2,int y2); void far ellipse(int x,int y, int start_angle,intend_angle,int x_radius,int y_radius); Функции linerel и lineto в качестве первой точки используют текущую графическую позицию CP, а вторую выбирают аналогично функциям moverel и moveto, т. е. через приращения координат или по явному указанию. Функция circle рисует окружность радиусом radius с центром в точке с координатами (x, y). Функция arc и ellipse вычерчивают дуги окружности и эллипса с центром в точке (x, y), соответственно ограниченные углами start_angle и end_engle.Существует перечислимый тип font_names, задающий символические имена для номеров пяти графических шрифтов (один матричный и четыре векторных из минимального набора): enum font_names DEFAULT_FONT=0, TRIPLEX_FONT, SMALL_FONT, SANS_SERIF_FONT, GOTHIC_FONT Наиболее простым способом инициализации знакогенератора (загрузки определенной таблицы символов) является автоматическая загрузка с использованием функции void far settextstyle(int font,int directon,int charsize); Функция устанавливает основные параметры в

План
ОГЛАВЛЕНИЕ

1. ОБЗОР ГРАФИЧЕСКИХ ФУНКЦИЙ3

1.1. Общие сведения

1.2. Инициализация графического драйвера и режима

1.3. Работа с растром точек

1.4. Управление цветом

1.5. Базовые функции доступа к видеопамяти

1.6. Графические примитивы

1.7. Вывод графического текста

2. ПРИЕМЫ ПРОГРАММИРОВАНИЯ ГРАФИЧЕСКОГО РЕЖИМА

2.1. Подключение графической библиотеки

2.2. Инициализация графического режима

2.3. Включение драйвера и шрифтов в исполняемый файл

2.4. Рисование геометрических фигур

2.5. Выделение памяти под большие одномерные массивы

2.6. Вывод числовой информации

2.7. Задержка экрана

2.8. Реакция программы на нажатие конкретной клавиши

2.9. Организация ввода числовой информации

2.10.Проверка выхода аргумента функции из ОДЗ

2.11.Графическая и математическая системы координат

2.12.Использование двух видеостраниц

2.13.Рисование изображений в bmp-формате

2.14.Работа с мышью

3. ЗАДАНИЯ ДЛЯ ЛАБОРАТОРНОЙ РАБОТЫ

3.1. Звездное небо

3.2. Снегопад

3.3. Рисование графика функции

3.4. Вращение звезды

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.

ОБЗОР ГРАФИЧЕСКИХ ФУНКЦИЙ

1.1. Общие сведения

Список литературы
Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. М.: Финансы и статистика, 1992. 272 с.

Керниган Б. Язык программирования Си. Задачи по курсу Си / Б. Керниган, Д. Ритчи. М.: Финансы и статистика, 1985. 192 с.

Юркин А.Г. Задачник по программированию / А.Г. Юркин. СПБ.: Питер, 2002. 192 с.

Подбельский В.В. Программирование на языке Си: учеб. пособие / В.В. Подбельский, С.С. Фомин. М.: Финансы и статистика, 2005. 600 с.

Трофимов С.П. Программирование в Си. Организация ввода-вывода: метод. указания / С.П. Трофимов. Екатеринбург: УГТУ,1998. 20 с.

Трофимов С.П. Программирование в Си. Динамически распределяемая память: метод. указания / С.П. Трофимов. Екатеринбург: МИДО, 1998. 14 с.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?