Работа в графическом режиме.
Обеспечивается функциями модуля <graphics.h> которые реализуют Borland Graphics Interface (BGI).
Для подключения библиотеки необходимо установить опцию с помощью меню
options → linker → liblaries → graphics library
void for initgraph (int far *graphdrive, int far *graphmode, char far *path); — инициализирует графический режим определенный двумя первыми параметрами
graphdrive — собственный режим (по умолчанию graphdrive = DETECT)
graphmode —
режим VGA с одной страницы видео памяти и разрешением 640х480 pixels.
Для постраничного режима необходимо задать следующие значения параметров
graphdrive = VGA //9;
graphmode = VGAMED //1;
path — строка задающая путь к файлу egavga.bgi (графический драйвер)
Драйверы при стандартной установке системы находится в папке bgi после выззова функции экран очищается, невидимый курсор помещается в верхний левый угол экрана с координатами 0:0.
// рисуем дугу окружности в центре x, y, с радиусом r, началом и концом
void arc(int x, int y, int stangle, int endangle, int r)
// рисует окружность
void circle (int x, int y, int r)
// рисует закрашенный сектор круга
void pieclise (int x, int y, int stangle, int endangle, int r)
// рисует дугу элипса
void ellipse (int x, int y, int stangle, int endangle, int xradius, int yradius)
// рисует закрашенным элипсом
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 rectangle (int x1, int y1, int x2, int y2)
//закрашенный прямоугольник
void bar (int x1, int y1, int x2, int y2)
// закрашенный параллелепипед (depth — глубина, topflag — определяет какая из из трехмерных вершин рисуется)
void bar3d (int x1, int y1, int x2, int y2, int depth, int topflag)
// контур многоугольника, n — кол-во вершин+1, points — координаты точек (одномерный массив последовательно x, y, чтобы многоугольник получился замкнутым необходимо передать координаты n+1 вершины, повторив в конце массива координаты первой вершины).
void drawpoly (int n, int * points)
// закрашенный многоугольник
void fillpoly (int n, int * points)
// закрашивает пиксель
void putpixel (int x, int y, int color)
// рисует линию
void line (int x1, int y1, int x2, int y2)
// линию от данной точки
void lineto (int x, int y)
// линию от данной точки до точки определенной смещением по x и y
void linerel (int dx, int de)
// перемещает курсор в точку
void moveto (int x, int y)
// смещает курсор
void moverel (int dx, int dy)
// возвращает текущую позицию курсора
int getx(), int gety()
// устанавливает цвет рисования (от 0 — черный до 16 — белый или цветовые константы)
void setcolor (int color)
// цвет фона
void setbkcolor (int color)
// стиль линии (2 параметр — шаблон в битовой матрицы, если первый параметр определяет стиль линии как пользовательский, 3 параметр — толщина)
void setlinestyle (int linestyle, unsigned upattern, int thickness)
// стиль и цвет заполнения закрашенных фигур (стли от 0 до 11, 12 — пользовательский, задать который можно с помощью битовой матрицы функцией)
void setfillstyle (int pattern, int color)
// битовая матрица ...
void setfillpattern (char * upattern, int color)
// выводит строку текста в текущую позицию
void outtext (const shat * str)
// выводит строку текста в заданной позиции
void outtextxy (int x, int y, char * str)
// устанавливает стиль символов (1 — шрифт (русские только в 0), 2 — направление вывода текста (0 — горизонталь, 1 — вертикаль), 3 — размер символов)
void settextstyle (int font, int direction, int charsize)
// полином определяет доступность экрана вне окна, clipon = 0 — область вне окна доступна, иначе нет
void setviewport (int x1, int y1, int x2, int y2, int clipon)
// очищает окно, заполняя его цветом фона, перемещает в верхний левый угол окна
void clearviewport ()
// очищает экран, заполняя его цветом фона, перемещает в верхний левый угол окна
void cleardevice ()
// закрывает графику
void closegraph ()
// устанавливает активную страницу видео памяти (страницы нумеруются с 0)
void setactivepage (int numpage)
// отображает страницу на экране
void setvisualpage (int numpage)
// коэффициент сжатия
void setaspectratio (int *xasp, int *yasp)
// сохраняет в памяти битовый образ прямоугольной части экрана
void getimage (int x1, int y1, int x2, int y2, void *bitmap)
// выводит битовый образ сохраненный ранее на экран, op — определяет способ вывода изображения
void putimage (int x, int ym void *bitmap, int op)
Задача «Ханойская башня»
#include <stdio.h>
Void honoy (int k, int I,int j);
{
If(k)
{
Hanoy(k-1,I,6-i-j);
Printf(“Диск %d-й со шпиля %d на шпиль %d”,k,I,j);
}
}
