Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Тема: «Работа с графическим режимом»




Цель работы – Изучение работы дисплея в графическом режиме.

Теоретические сведения

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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...