|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - C++: Стандартные библиотечные функции работы с графикойC++: Стандартные библиотечные функции работы с графикой2 Волжский Университет им. В.Н. Татищева Факультет Информатики и Телекоммуникаций Курсовая работа Дисциплина: Системное программное обеспечение Тема: «C++: Стандартные библиотечные функции работы с графикой» Тольятти 200г. Содержание Введение1. Анализ графического модуля “graphics.h”1.1 Анализ функции модуля1.2 Анализ констант, типов и глобальных переменных модуля2. Реализация пользовательской библиотеки “mouse.h”ЗаключениеПриложение 1Список используемой литературыВведениеТема данной курсовой работы стандартные библиотечные функции работы с графикой в C++. В данном работе я постараюсь раскрыть основные моменты работы функций стандартного модуля C++, который можно подключить к любому проекту написанном на языке Си, с помощью заголовочного файла graphics.h. Конечно, кроме данного модуля в современных средах разработки программных приложений на данном языке есть и такие не менее интересные модули как glu32.lib и glaux.lib, подключаемые к проектам с помощью заголовочных файлов gl.h, glu.h, glaux.h. Они позволяют программисту показать всю красоту приложения, а также могут использоваться для спецэффектов, но данные модули предназначены для работы с библиотекой opengl32.dll. Использование данной библиотеки, по сути дела, является работа с “компьютерной графикой”, но под графические оболочки таких операционных систем как Windows 9x/2k/XP, Linux Mandrake/Red Hat/Slackware и тому подобных. Эта тема куда более обширная и интересная, но, как мы знаем, модуль graphics.h предназначен, в основном, для работы под операционную систему MS-DOS, в которой просто невозможно использование самого opengl'а. А по этому поводу, я считаю нужным, перейти непосредственно к основному разделу данной работы. Т.е. приступить к рассмотрению стандартных функций.1. Анализ графического модуля “graphics.h”Как было уже сказано, данный модуль используется для работы с графикой под ОС MS-DOS. Функции, используемые в нём, для работы с графикой, да и как и сама графика, довольно примитивны. Итак, начнём. Для инициализации модуля требуется подключить, так называемый, заголовочный файл (#include <graphics.h>). В этом файле описаны все функции, которые требуются для написания программы работающей с “графикой”. 1.1 Анализ функции модуляinitgraph( &grdriver, &grmode, “path”); - функция инициализации графического режима, где &grdriver, &grmode, “path” - параметры загружаемого режима;grdriver и grmode - переменные типа integer;“path” - путь к загружаемому драйверу графического режима.Функция закрытия графического режима: closegraph(); - данная функция без каких либо параметров и закрывает текущий графический режим.Функция определения графического драйвера и видео режима: detectgraph( &grdriver, &grmode);Функция, возвращающая структуру определения палитры: getdefaultpalette(); - возвращает указатель на заданную по умолчанию структуру палитры для текущего драйвера инициализированного по initgraph.getdrivername(); - функция возвращает имя текущего графического драйвера.getgraphmode(); - функция возвращает текущий графический режим.getmoderange( grdriver, &low, &high); - функция возвращает диапазон режимов для данного графического драйвера, где grdriver, low, high - переменные типа integer.graphdefaults(); - сбрасывает текущие настройки в настройки по умолчанию._graphgetmem(); - функция выделения памяти. Эту функцию вызывают подпрограммы в графической библиотеке, чтобы распределить память. Данную функцию можно использовать независимо от графической библиотеки, вызвав её с указанием нужного объёма памяти в байтах._graphfreemem(); - функция освобождения памяти. Используется в сочетании с _graphgetmem().setgraphbufsize(); - функция изменяет внутренний размер графического буфера. Вызывается до initgraph().graphresult(); - возвращает код ошибки для последней неудачно выполненной операции.installuserdriver( int *name, int huge( *detect)); - функция устанавливает драйвер определённый программистом. *name - название нового драйвера, *detect - указатель на дополнительную функцию авто определения, которая может сопровождать новый драйвер. Эта функция (авто определения) не берёт ни каких параметров и возвращает целочисленное значение.registerbgidriver( *grdriver) - Функция сообщает графической системе, что драйвер устройства, на который указывает *grdriver был включён во время “линковки”.registerbgifont( *font) - Функция информирует графическую систему, что шрифт, на который указывает *font был включен во время “линковки”.restorecrtmode() - Функция восстанавливает режим, существовавший до активизации графического режима функцией initgraph().arc( int x, int y, int stangle, int endangle, int radius); - Функция рисует дугу, по заданным координатам x, y, начальным и конечным углом stangle, endangle и заданным радиусом radius.bar( int left, int top, int right, int bottom); - Функция рисует прямоугольник начиная от левого верхнего угла с координатами left, top до правого нижнего угла с координатами right, bottom.bar3d( int left, int top, int right, int bottom, int depth); - Функция рисует “трёхмерный прямоугольник” или, так сказать, подобие параллелепипеда, начиная от верхнего левого угла, до правого нижнего угла и с указанием глубины depth.circle( int x, int y, int radius); - Функция рисует окружность с центром в точке с координатами ( x, y) и радиусом radius.cleardevice(); - Функция очищает экран в графическом режиме и возвращает текущую позицию указателя в точку с координатами ( 0, 0).clearviewport(); - Функция стирает область просмотра и перемещает текущую позицию в точку с координатами ( 0, 0), относительно области просмотра.drawpoly( int numpoints, int *polypoints); - Функция рисует полигон с количеством вершин numpoints и координатами вершин *polypoints. *polypoints является одномерным массивом.ellipse( int x, int y, int stangle, int endangle, int xradius, int yradius); - Функция рисует эллипс с координатами в точке ( x, y), начальным и конечным углами stangle, endangle, и радиусами xradius, yradius по осям x и y.fillpoly( int numpoints, int *polypoints); - Функция рисует и закрашивает заданным цветом полигон.fillelipse( int x, int y, int xradius, int yradius); - Функция рисует закрашенный эллипс.floodfill( int x, int y, int border); - Область, ограниченная цветной границей закрашивается установленным образцом и цветом.getarccoords( &arcinfo); - Функция возвращает координаты последней точки, на которую был переведён указатель, где параметр &arcinfo объявлен как struct arccoordstype arcinfo.getaspectratio( &xasp, &yasp); - Получает значения коэффициента сжатия в &xasp, &yasp, где xasp, yasp являются переменными типа integer.getbkcolor() - Возвращает значение типа integer текущего цвета фона.getcolor() - Возвращает значение типа integer установленного на данный момент цвета.getdefaultpalette() - ( дополнение) Возвращает структуру определения палитры в переменную объявленную как struct palettetype far *<имя_переменной>=(void *) 0;.getfillpattern( char far *pattern); - Копирует определённый пользователем заполненный образец в память.getfillsetting( &fillinfo); - Получает информацию о текущих настройках стиля и цвета, где параметр &fillinfo объявлен как struct fillsettingstype fillinfo.getimage( int left, int top, int right, int bottom, void far *bitmap); - Сохраняет картинку в специально отведённой области памяти, где left, top, right, bottom координаты картинки, а *bitmap указатель на область памяти.getlinesettings( &lineinfo); - Получает текущий тип линии, образец и толщину, где параметр &lineinfo объявлен как struct linesettingstype lineinfo.getmaxcolor(); - Возвращает значение типа integer, которое соответствует номеру цвета.getmaxmode(); - Возвращает значение типа integer, которое соответствует максимальному номеру графического режима, для текущего драйвера.getmaxx(); - Возвращает значение типа integer, которое соответствует максимальному количеству точек по оси x для текущего графического режима.getmaxy(); - Возвращает значение типа integer, которое соответствует максимальному количеству точек по оси y для текущего графического режима.getmodename( int mode_number); - Возвращает значение типа integer, которое соответствует указанному графическому режиму.getpalette( &palette); - Получает информацию о текущей палитре, где параметр &palette объявлен как struct palettetype palette.getpalettesize(); - Функция возвращает значение типа integer, соответствующее количеству цветов палитры для текущего графического режима.getpixel( int x, int y); - Функция возвращает номер цвета точки, находящейся по координатам ( x, y).gettextsettings( &textinfo); - Функция возвращает текущие настройки фонта для текущего графического режима, где параметр &textinfo определён как struct textsettingstype textinfo.getviewsettings( &viewinfo); - Получает информацию о текущей области просмотра, где параметр &viewinfo определяется как struct viewporttype viewinfo.getx(); - Функция типа integer возвращает текущую позицию указателя по оси x.gety(); - Функция типа integer возвращает текущую позицию указателя по оси y.grapherrormsg( int errorcode); - Возвращает код ошибки в виде переменной errorcode типа intger.imagesize( int left, int top, int right, int bottom); - Определяет размер области памяти, необходимый для сохранения двоичного образа.installuserfont( char far *name); - Функция типа intger возвращает номер идентификатора шрифта, который можно передать функции settextstyle для выбора данного шрифта. Параметр *name это путь к файлу шрифта. Одновременно данной функцией можно подключить до двадцати шрифтов.line( int x0, int y0, int x1, int y1); - Функция рисует линию от точки с координатами x0, y0 до точки с координатами x1, y1. Не обновляет текущую позицию.linerel( int dx, int dy); - Функция рисует линию от текущей позиции до точки, находящейся на относительном расстоянии от текущей позиции, затем передвигает текущую позицию.lineto( int x, int y); - Рисует линию от текущей позиции до точки с координатами ( x, y), затем переносит текущую позицию в ( x, y).moverel( int dx, int dy); - Перемещает текущую позицию на относительное растояние.moveto( int x, int y); - Перемещает текущую позицию в точку с координатами ( x, y).outtext( char far *textstring); - Выводит строку в графическом режиме. Строка должна заключатся в “”.outtextxy( int x, int y, char far *textstring); - Выводит строку в графическом режиме предварительно перейдя в точку с координатами ( x, y).pieslice( int x, int y, int stangle, int endangle, int radius); - Рисует и закрашивает замкнутый сектор круга.putimage( int left, int top, void far *bitmap, int op); - Выводит битовый образ на экран.putpixel( int x, int y, int color); - Рисует точку с координатами ( x, y) и цветом color.rectangle( int left, int top, int right, int bottom); - Рисует прямоугольник от точки с координатами (left, top) до точки с координатами ( right, bottom).Registerfarbgidriver (void far *driver); - Данная функция используется для регистрации удалённых графических драйверов.Registerfarbgifont (void far *font); - Данная функция используется для регистрации удалённых шрифтов.sector (int x, int y, int stangle, int endangle, int xradius, int yradius); - Функция рисует сектор круга установленным цветом, затем заполняет его используя образец и цвет, установленные функциями setfillstyle или setfillpattern.setactivepage( int page); - Устанавливает активную страницу для графического вывода.setallpalette( &palette); - Устанавливает полную палитру цветов для данного режима, где переменная &palette определена как struct palettetype palette.setaspectratio( int xasp, int yasp); - Заменяет заданный по умолчанию аспект сжатия графической системы.setbkcolor( int color); - Устанавливает цвет фона по его номеру заданному переменной color.setcolor( int color); - Устанавливает цвет по его номеру заданному переменной color.setfillpattern( char far *upattern, int color); - Выбирает определённый пользователем образец заливки.setfillstyle( int pattern, int color); - Функция устанавливает образец и цвет заливки.setgraphmode( int mode); - Устанавливает систему в графический режим, определённый параметром mode. Сбрасывает все настройки в положение “по умолчанию”. Очищает экран.setlinestyle( int linestyle, unsigned upattern, int thickness); - Устанавливает стиль рисуемых линий для функций рисования line, lineto, rectangle, drawpoly, etc.setpalette( int colornum, int color); - Устанавливает палитру от цвета colornum до цвета color.setrgbpalette( int colornum, int red, int green, int blue); - Данная функция может использоваться с IBM 8514 и VGA драйверами.settextjustify( int horiz, int vert); - Устанавливает выравнивание текста для графического режима. По умолчанию стоит выравнивание по верхнему левому углу.settextstyle( int font, int direction, int charsize); - Устанавливает характеристики текста: стиль, положение( горизонтальное или вертикальное), размер шрифта.setusercharsize( int multx, int divx, int multy, int divy); - Устанавливает определённый пользователем “коэффициент сжатия” шрифта. По умолчанию ширина шрифта определена как multx:divx, высота как multy:divy.setviewport( int left, int top, int right, int bottom, int clip); - Устанавливает новую область просмотра для графического вывода. Параметр clip определяет отсечены или нет все рисунки текущей области просмотра.setvisualpage( int page); - Устанавливает страницу с номером page визуальной графической страницей.setwritemode( int mode); - Устанавливает режим вывода объектов в графическом режиме. Параметр mode может принимать значения 0, которое соответствует режиму copy_put или 1, соответствующее режиму xor_put. Параметр copy_put использует ассемблерную команду MOV, рисуя поверх всех объектов новый объект. Параметр xor_put использует команду XOR (команду неэквивалентности), замещая предыдущий объект таким же новым. Используя дважды параметр xor_put, вы получите первоначальный результат.textheight( char far *textstring); - Функция возвращает высоту строки в количестве точек.textwidth( char far *textstring); - Функция возвращает ширину строки в количестве точек.1.2 Анализ констант, типов и глобальных переменных модуляarccoordstype - Используется функцией getarccoords для получения параметров текущей области просмотра.struct arccoordstype{ int x, y; /* center points of arc */ int xstart, ystart; /* start position */ int xend, yend; /* end position */}CGA_COLORS - Данная константа определяет цветовую схему, доступную для функция BGI, выполняющихся на CGA мониторах. Определена в модуле GRAPHICS.H. Используется функциями setallpalette, setbkcolor, setcolor, setpalette.COLORS - Данная символьная константа устанавливает атрибут цвета символов на EGA и CGA мониторах. Определена в модуле CONIO.H. Используется функциями (функции описаны в модуле CONIO.H) textattr, textbackground, textcolor.EGA_COLORS - Данная константа определяет цветовую схему, доступную для функция BGI, выполняющихся на EGA мониторах. Определена в модуле GRAPHICS.H. Используется функциями setallpalette, setbkcolor, setcolor, setpalette.fill_patterns - Образцы заливки применяемые функциями getfillsettings и setfillstyle( см. таблицу 1).Таблица 1.
text_just - Параметр горизонтального и вертикального выравнивания для функции settextjustify(). Таблица 12. Значения параметра text_just.
text directions - Настройки текста. Содержит два параметра HORIZ_DIR и VERT_DIR. textsettingstype - Используется для получения текущих настроек текста функцией gettextsettings(). struct textsettingstype { int font; int direction; int charsize; int horiz; int vert; } USER_CHAR_SIZE - Определённый пользователем размер символа. В таблице 13 указаны значения данного параметра, а так же размеры шрифтов, соответствующие заданному параметру. Таблица 13.
Используется функциями gettextsettings(), settextstyle(), setusercharsize() и параметром textsettingstype. VERT_DIR - Данный параметр устанавливает направление графического вывода шрифта (Имя параметра: VERT_DIR; Значение: 1; Направление: Снизу в верх, поворачивает выводимый текст на 90 градусов против часовой стрелки). Данный параметр используется функциями gettextsettings(), settextstyle(), setusercharsize(). viewporttype - Используется для получения настроек области вывода функцией getviewsettings(). struct viewporttype { int left; int top; int right; int bottom; int clip; } 2. Реализация пользовательской библиотеки “mouse.h”В стандартной комплектации BorlandC2.0, BorlandC3.1 или любой версии компилятора C++ от любой другой корпорации, будь то MicroSoft, AT&T и т.д. нет ни одного модуля работы с мышью как-то в обычном или графическом режиме. Я имею в виду приложения под ОС MS-DOS. Конечно, написание такого модуля сводится не только к знаниям языка C++, но и так называемого языка низкоуровневого программирования Assembler'а.Итак, приступим. Для начала мы должны определить основные функции, типы и константы.Таблица 1. Константы.
|
РЕКЛАМА
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |