Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Тема: «Работа с графическим режимом»
Цель работы – Изучение работы дисплея в графическом режиме. Теоретические сведения 8.1. Графический режим видеоадаптера При работе в графическом режиме экран дисплея представляет собой матрицу точек (пикселей - pixel) - т.е. матрицу отображаемых точек. При этом число столбцов и строк пикселей (разрешение экрана дисплея) зависит от режима работы видеоадаптера. Можно управлять цветом каждого пикселя, задавая цвет фона, рисунка и заполнения замкнутых областей экрана дисплея, а также создавать эффект движения изображений. За начало координат экрана дисплея в графическом режиме принимается верхний левый угол с координатами x=0 и y=0, где x - координата по горизонтали, y - координата по вертикали точки (пикселя). Во всех примерах программ следует нулевые координаты присваивать верхнему левому углу создаваемого графического окна. Содержимое библиотеки графических функций в языке С подразделяется на немобильную группу функций (функции зависят от типа адаптера) и на мобильную группу функций. Немобильная группа графических программ представляет собой BGI драйвер (Borland Graphics Interface). Драйвер - это обработчик прерывания 10h, он должен дополнить системный обработчик до того, как будут использоваться мобильные графические функции. Перед завершением программы таблица векторов прерываний восстанавливается. Основные функции BGI-драйвера - установка и обновление ряда внешних переменных, которые могут изменяться как функциями системного обработчика прерывания 10h (например, при переключении видеорежима или при изменении регистров палитры), так и мобильными функциями библиотеки графики языка Turbo C (TC) или C++. Для различных типов адаптеров применяются различные драйверы: CGA.BGI - драйвер для CGA и MCGA; EGAVGA.BGI - драйвер для адаптеров EGA,VGA; HERC.BGI - драйвер для монохромных адаптеров Hercules. Графические функции мобильной группы подразделяются на группы: функции подготовки графической системы и перехода в текстовый режим; функции получения изображений на экране дисплея; функции установки параметров изображения (вид штриховки, стиль линий и т.д.); функции определения параметров режимов и изображений. 8.2. Настройка графического режима компилятора Dev‑Cpp 1) Необходимо скачать заголовочный файл graphics.h http://www.uniqueness-template.com/devcpp/graphics.h и библиотеку libbgi.a http://www.uniqueness-template.com/devcpp/libbgi.a 2) Далее следует скопировать файл graphics.h в папку C:\Dev-Cpp\include и файл libbgi.a в папку C:\Dev-Cpp\lib. 3) Запустить оболочку Dev-C++ и войти в меню Tools/Compiler Options и на вкладке Compiler установить как на рис.8.1. -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
Рисунок 8.1 – Меню Опции компилятора 4) Войти в меню Tools/Compiler Options и на вкладке Programs установить программы по умолчанию gcc.exe и g++.exe. 8.3. Функции подготовки графической системы Перед использованием графических функций необходимо инициализировать систему графики. Графические режимы, поддерживаемые библиотекой графики, задаются символическими константами, описанными в файле graphics.h в перечислимом типе graphics_mode. Инициализация графической системы производится функцией initgraph(), которая загружает графический драйвер и переключает экран дисплея в требуемый графический режим. Для завершения работы в графическом режиме необходимо применить функцию closegraph(). 8.4. Основные функции получения изображения Аргументами большинства функций графики являются данные целого типа: 1) Вычерчивание окружности: circle(x,y,r); 2) Вычерчивание закрашенного прямоугольника: bar(x1,y1,x2,y2); 3) Вычерчивание параллелепипеда: bar3d(x1,y1,x2,y2,глубина,p); p=0 или p=1 - верхняя грань отображается (не отображается) 4) Вычерчивание линии: line(x1,y1,x2,y2); 5) Вычерчивание точки: putpixel(x,y,цвет); 6) Вычерчивание прямоугольника: rectangle(x1,y1,x2,y2); 7) Вывод текста: outtext(x,y,"текст"); 8) Установка указателя на экране дисплея: moveto(x,y); 9) Очистка экрана дисплея: cleardevice(void); 10) Заполнение ранее заданным наполнителем замкнутой области: floodfill(x,y,c); c - номер цвета линии, ограничивающей область.
8.5. Основные функции установки параметров изображения 1) Установка цвета линий: setcolor(цвет); 2) Установка цвета фона: setbkcolor(цвет); 3) Установка стиля наполнителя замкнутых линий: setfillstyle(номер наполнителя (0-12), цвет); 4) Установка толщины линий: setlinestyle(стиль линии, 0, толщина); 0 - непрерывная, 1 - из точек, 2,3 - штрих, 5) Установка стиля текста: settextstyle(шрифт 0-4, направление(0 – горизонтальное,1– вертикальное), размер); 8.6. Основные функции определения параметров режимов detectgraph() - определяет графический режим и драйвер; getcolor(), getbkcolor() - возвращают номер цвета объектов или фона соответственно. Пример 8.1. Программа построения линии на экране в режиме BGI. #include <graphics.h> int main() { initwindow(400,300); //открытие дисплея в режиме BGI 400x300 moveto(0,0); lineto(50,50); while(!kbhit()); //wait for user to press a key closegraph(); //close graphics window return 0; }
8.7. Основные функции работы с изображением на экране 1) unsigned imagesize(int x1,int y1,int x2,int y2); - возвращает значение объема буфера для сохранения графической информации в окне экрана задан- ного размера; 2) void getimage(int x1,int y1,int x2,int y2,void *buf); - получение и сохранение области экрана в буфере (указатель buf) памяти; 3) void putimage(int x,int y,buf,int Код); - вывод изображения из buf на экран начиная с заданной позиции; код определяет способ наложения выводимого изображения: COPY_PUT (0) – простое перемещение; XOR_PUT (1) – наложение с операцией “Исключающее ИЛИ”; OR_PUT (2) – с выполнением операции “ИЛИ”; AND_PUT (3) – с выполнением операции “И”; NOT_PUT (4) – перемещение изображения с инверсией (отрицанием). Некоторые дополнительные функции. 1) void sound(unsigned z); - вызывает звуковой сигнал с частотой (герц); 2) void nosound(void); - прекращает подачу звукового сигнала; 3) void delay(int x); - задерживает выполнение программы на х миллисекунд; прототипы этих функций описаны в библиотеке dos.h. 4) int bioskey(0); - ждет нажатия клавиши (int Код=0) и возвращает ее код; прототип описан в библиотеке bios.h. |
||
Последнее изменение этой страницы: 2018-05-10; просмотров: 192. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |