Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Восстановление установок по умолчанию

Поиск

void graphdefaults ( void ); Возвращает все установки, которые имели место при выполнении функции initgraph, текущее окно – во весь экран, текущую позицию курсора – в точку с координатами (0, 0).

Размещение на экране

Окна

void setviewport ( int left, int top, int right, int bottom, int clip); Устанавливает границы текущего окна. Курсор перемещается в позицию (0, 0) окна. Параметр clip определяет, ограничен ли вывод пределами окна или нет. Если clip не равен 0, то вывод выполняется только в пределах окна.

void getviewsettings ( struct viewporttype* viewport); Дает информацию о текущем окне.

Структура viewporttype имеет вид:

struct viewporttype{

int left;

int top;

int right;

int bottom;

int clip;

}

void clearviewport ( void ); Очищает текущее окно(фактически закрашивает его установленным цветом фона) и перемещает курсор в позицию (0, 0) данного окна.

void cleardevice ( void ); Очищает весь экран цветом фона и перемещает курсор в начало экрана(абсолютные координаты (0, 0)).

void getimage ( int left, int top, int right, int bottom, void * bitmap); Сохраняет битовое изображение прямоугольной области экрана в отведенной памяти. Использует абсолютные координаты.

void putimage ( int left, int top, void * bitmap, int op); Извлекает сохраненный функцией getimage битовый образ и располагает его в области с координатами левого верхнего угла (left, top). Параметр op определяет, как взаимодействуют пиксели "старого" и "нового" экранов. Возможные значения определяются символическими константами:

0 COPY_PUT "Старый" экран полностью заменяется "новым".

1 XOR_PUT Стираются пиксели, совпадающие в обоих экранах.

2 OR_PUT Сохраняются рисунки обоих экранов

3 AND_PUT Сохраняются только пиксели, совпадающие в обоих экранах.

4 NOT_PUT "Старый" экран заменяется инверсным изображением "нового".

Эти функции позволяют реализовывать так называемые всплывающие окна, сохраняя область экрана, закрываемую ими.

Поскольку в памяти, кроме битового изображения, запоминается информация о высоте и ширине области, то для определения необходимого размера памяти для хранения используется специальная функция:

unsigned imagesize ( int left, int top, int right, int bottom);

Для выделения памяти под сохраняемую область рекомендуется импользовать функцию:

void* malloc ( unsigned size); Прототип в alloc.h.

Координаты курсора и перемещения

int getmaxx ( void ); Возвращает максимальную координату x для установленного драйвера и видеорежима. Для принятого видеоадаптера VGA она равна 639.

int getmaxy ( void ); То же для координаты y. Для VGA она равна 479.

int getx ( void ); Возвращает относительную(зависящую от окна) координату x курсора.

int gety ( void ); То же для координаты y.

void moverel ( int dx, int dy); Перемещает курсор на dx пикселей по горизонтали и dy пикселей по вертикали относительно текущего положения.

void moveto ( int x, int y); Перемещает курсор в точку (x, y) в относительных координатах окна.

Вывод на экран

Текст

void outtext ( char * textstring); Выводит текстовую строку с текущей позиции курсора. Используются установленные: фонт, направление, размер символа и выравнивание. Если направление горизонтальное и выравнивание LEFT_TEXT, то позиция курсора перемещается на расстояние, равное длине строки. При других параметрах позиция курсора не меняется.

void outtextxy ( int x, int y, char * textstring); Выводит строку с относительных координат окна x и y.

Курсор

void _setcursortype ( int cur_t); Управляет видом курсора. Возможные значения параметра cur_t:

_NOCURSOR Выключает курсор

_SOLIDCURSOR Сплошной прямоугольный курсор

_NORMALCURSOR Подчеркивание

Прямоугольники

void rectangle ( int left, int top, int right, int bottom); Рисует прямоугольник с заданным битовым образом и цветом заполнения. Границы области не выделяются.

void bar3d ( int left, int top, int right, int bottom, int depth, int topflag); Рисует

3-мерный прямоугольник с заданным битовым образом и цветом заполнения. Границы области выделяются установленным стилем и цветом линии. Нормальная глубина(depth) составляет 25% от ширины прямоугольника. Если topflag не равен 0, то верхняя грань показывается, если равен 0, то нет. Это позволяет поместить несколько прямоугольников один на другой.

Пример.

bar3d (left, top, right, bottom, (right-left)/4, 1);

Линии

void line ( int x1, int y1, int x2, int y2); Рисует линию между 2-мя заданными точками. Положение курсора не меняется.

void linerel ( int dx, int dy); Рисует линию от текущего положения курсора до точки, лежащей на относительном расстоянии (dx, dy). Курсор перемещается в конечную точку.

void lineto ( int x, int y); Рисует линию от текущего положения курсора до точки с координатами (x, y). Курсор перемещается в конечную точку.

Эллипсы

void ellipse ( int x, int y, int stangle, int endangle, int xradius, int yradius); Рисует незаполненный эллиптический сектор цветом рисования. Стиль линии в этой и последующих функциях не действует, влияет только толщина. Здесь:

- x, y – координаты центра эллипса в пикселях,

- stangle, endangle – начальный и конечный углы сектора в градусах(0 – 360),

- xradius, yradius – радиусы по x и y соответственно.

void fillellipse ( int x, int y, int xradius, int yradius); Рисует эллипс, затем заполняет его текущим битовым образом и цветом.

void sector ( int x, int y, int stangle, int endangle, int xradius, int yradius); Рисует и заполняет эллиптический сектор.

Круги

void arc ( int x, int y, int stangle, int endangle, int radius); Рисует незаполненный круговой сектор.

void pieslice ( int x, int y, int stangle, int endangle, int radius); Рисует заполненный круговой сектор.

void circle ( int x, int y, int radius); Рисует незаполненный круг.

Также полезной может оказаться функция:

void arccoords ( struct arccoordstype* arccoords); Получить информацию о параметрах последнего вызова функции arc. Информация выдается структурой вида:

struct arccoordstype{

int x, y; // Коодинаты центра

int xstart, ystart; // Начальная точка дуги

int xend, yend; // Конечная точка

}

Многоугольники

void drawpoly ( int numpoints, int * polypoints); Рисует, в общем случае, ломаную линию установленным стилем и цветом линии. Здесь:

- numpoints – число вершин,

- polypoints – координаты вершин(2 * numpoints значений) в порядке (x1, y1), (x2, y2), ….

Для того, чтобы нарисовать замкнутый многоугольник, координаты 1-й и последней вершин должны совпадать.

void fillpoly ( int numpoints, int * polypoints); Рисует границы ломаной линии (многогоугольника) установленным стилем и цветом линии, затем заполняет получившуюся область установленным битовым образом и цветом.

Пиксели

unsigned getpixel ( int x, int y); Возвращает цвет пикселя с заданными координатами.

void putpixel ( int x, int y, int color); Рисует пиксель цветом color в точке (x, y).

Дополнительные функции

void sound ( unsigned frequency); Включить звук(частота в гц).

void nosound ( void ); Выключить звук.

void delay (unsigned time); Задержка выполнения в миллисек.

void sleep ( unsigned lag); Задержка выполнения в сек.

Прототипы в файле dos.h

Данные функции не относятся к библиотеке graphics. Они приводятся в этом разделе, чтобы программист имел возможность включить звук в проектирование интерфейса.

Вопросы для самопроверки и контроля

Вопросы для самопроверки

1. Как перейти в графический режим?

2. Укажите размер экрана и начальные координаты курсора в текстовом и графическом режимах соответственно.

Контрольные вопросы

1. Что представляют собой файлы с расширением bgi?

2. Почему в графическом режиме используются битовые образы размером 8*8 пикселей?



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 313; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.250.241 (0.006 с.)