Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Использование графического режима
Цель работы: Изучение работы дисплея в графическом режиме.
Краткие теоретические сведения При работе в графическом режиме экран дисплея представляет собой матрицу точек (пикселов - 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. Графические функции мобильной группы подразделяются на группы: - функции подготовки графической системы и перехода в текстовый режим; - функции получения изображений на экране дисплея; - функции установки параметров изображения (вид штриховки, стиль линий и т.д.); - функции определения параметров режимов и изображений.
Функции подготовки графической системы Перед использованием графических функций необходимо инициализировать систему графики. Графические режимы, поддерживаемые библиотекой графики, задаются символическими константами, описанными в файле graphics.h в перечислимом типе graphics_mode. Инициализация графической системы производится функцией initgraph(), которая загружает графический драйвер и переключает экран дисплея в требуемый графический режим. Описание функции: initgraph(&g_driver,&g_mode," "); В двойных апострофах (третий параметр) необходимо указать путь (маршрут) к графическому драйверу. Если указать пробел, то графический драйвер должен быть в текущем каталоге. Первый параметр &g_driver - тип графического драйвера: 1 - CGA, 3 - EGA, 9 - VGA и т.д. Второй параметр &g_mode - графический режим (рассмотрим только для VGA драйвера): VGA 0 640x200 VGAMED 1 640x350 VGAHI 2 640x480 Запись типа 640x200 - это разрешающая способность экрана дисплея в графическом режиме (число строк умножить на число столбцов). Для автоматического задания режима графики следует записать: int g_driver=DETECT, g_mode; Для завершения работы в графическом режиме необходимо применить функцию closegraph();
Основные функции получения изображения Аргументами большинства функций графики являются данные целого типа. 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 - номер цвета линии, ограничивающей область.
Основные функции установки параметров изображения 1. Установка цвета линий: setcolor(цвет); 2. Установка цвета фона: setbkcolor(цвет); 3. Установка стиля наполнителя замкнутых линий: setfillstyle(номер наполнителя (0-12), цвет); 4. Установка толщины линий: setlinestyle(стиль линии, 0, толщина); 0 - непрерывная, 1 - из точек, 2,3 - штрих, 5. Установка стиля текста: settextstyle(шрифт 0-4, направление(0 – горизонтальное,1– вертикальное), размер);
Некоторые функции определения параметров режимов detectgraph() - определяет графический режим и драйвер; getcolor(), getbkcolor() - возвращают номер цвета объектов или фона соответственно. Пример программы построения на экране дисплея геометрических фигур с использованием различной цветовой палитры: #include <stdio.h> #include <graphics.h> #include <conio.h> #include <process.h> void main(void) { int g_driver=DETECT,g_mode,g_error; int x,y; initgraph(&g_driver,&g_mode,"c:\\bc31\\bgi"); g_error=graphresult(); if(g_error!=grOk) { puts("error"); getch(); exit(1); } setbkcolor(1); setcolor(14); settextstyle(3,1,5); outtextxy(20,200,"IMEGES!!!"); settextstyle(3,0,5); x=60;y=100; circle(x,y,50); outtextxy(30,180,"CIRCLE!!!"); getch(); bar(150,50,250,150); outtextxy(180,180,"BAR!!!"); getch(); bar3d(300,50,340,150,20,1); outtextxy(300,180,"BAR3d!!!"); getch(); setfillstyle(6,12); rectangle (50,250,150,350); floodfill(100,300,14); outtextxy(70,380,"IMEGES!!! - N6"); getch(); setfillstyle(8,12); rectangle (320,250,420,350); floodfill(350,250,14); outtextxy(340,380,"IMEGES!!! - N8"); getch(); closegraph(); }
|
||
Последнее изменение этой страницы: 2018-05-10; просмотров: 217. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |