Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет.lab2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
71 Кб
Скачать
☆

Int Driver,Mode;

Driver=DETECT;

Initgraph(&Driver,&Mode," ");

.............................

closegraphQ;

return 0;

}

Здесь функция initgraph вызывается в режиме автоматического тестирования аппаратуры. Поиск файла с драйвером выполняется в текущей директории.

Функция closegraph() освобождает память от драйвера и восстанавливает исходный видеорежим.

Используя функции restorecrtmode и setgraphmode, можно осуществлять переход в текстовый режим и обратно. При этом графический драйвер и графический буфер сохраняются в оперативной памяти. Синтаксис функций:

Void far restorecrtmode(void);

Void far setgraphmode(int mode);

Восстановить прежний графический режим можно, если запомнить его номер. Это можно сделать с помощью функции getgraphmode:

Int far getgraphmode(void);

Эта функция возвращает текущее значение номера графического режима

для активизированного драйвера.

3.2. Функции управления графическим окном

После установки графического режима по умолчанию графическим окном является весь экран. Левый верхний угол экрана имеет координаты (0,0), а правый нижний имеет координаты (getmaxx(),getmaxy()), где getmaxx и getmaxy — функции, возвращающие значения максимальных координат.

Смена графического окна может быть выполнена с помощью функции setviewport:

Void far setviewport(int left, int top, int right, int bottom, int clip)

Её аргументами являются координаты окна, а также логическое выражение (clip), определяющее требуется ли отсекать части изображения, выходящие за пределы окна или нет. Все графические операции касаются текущего графического окна, а координаты графического курсора всегда отсчитываются от верх-17 него левого угла экрана. Графический курсор невидим, но его текущие координаты можно определить с помощью функций getx и gety. Переместить курсор в требуемую позицию можно с помощью функций:

Void far moveto (int X, int y);

Void far moverel (int dx, int dy);

Первая функция перемещает курсор в позицию, заданную координатами х и у. Вторая функция перемещает курсор относительно текущей позиции на вектор (dx,dy). Для очистки графического окна используется функция:

Void far clearviewport(void);

При построении графических образов необходимо помнить, что на экране дисплея содержится разное количество пикселей по вертикали и горизонтали, а также то, что вертикальный и горизонтальный размеры пикселя неодинаковы. Это приводит к тому, что горизонтальный и вертикальный отрезки, содержащие одинаковое количество пикселей, на экране будут выглядеть как отрезки разной длины. Для правильного отображения требуется знать коэффициент пропорциональности (aspect ratio). Его можно определить с помощью функции:

Void far getaspectratio(int far *xasp, int far *yasp);

Эта функция через свои аргументы возвращает искомое значение, причем *yasp всегда устанавливается равным 10000, величина *xasp<=*yasp. От-

ношение *xasp к *yasp и дает коэффициент пропорциональности.

3.3. Управление цветом и стилем заполнения фигур

При инициализации графического режима определяется доступная палитра цветов. Палитрой называют максимальный набор цветов, поддерживаемых одновременно bgi-драйвером.

Цвета нумеруются от 0 до getmaxcolor(). Выбор номера цвета для изображения обеспечивает функция setcolor(int color). Цвет фона может быть изменен функцией setbkcolor(int color). После выполнения функции setcolor(n) все объекты изображаются в цвете, связанном с позицией n палитры цветов. Числа от 0 до 15, которые используются для обозначения цветов, определяют цветовые атрибуты пикселя или, как их ещё называют, «программные цвета». Каждому программному цвету присваивается аппарат-

ный цвет из полной палитры в 256 цветов. В программе для указания цвета можно вместо его номера использовать константы перечислимого типа COLORS, обозначающие цвета:

enum COLORS {BLACK, BLUE, GREEN, RED, MAGENTA, BROWN, LIGHTGRAY,

DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED,

LIGHTMAGENTA, YELLOW, WHITE};

Для управления соответствием между программными и аппаратными цветами используется ряд функций. Например, вызов setpalette(0,RED) присваивает первому цвету палитры красный цвет.

Для закрашивания геометрических фигур используются функции, заполняющие контур в соответствующем стиле:

setfillstyle(int pattern, int color);

floodfill(int x, int y, int border);

Первая функция устанавливает стиль и цвет заполнения (заливки), а вторая закрашивает замкнутую область, в которой содержится точка с координатами (x,y). Параметр border задает цвет границы. Параметр pattern определяет стиль заполнения.

3.4. Графические примитивы

Графические примитивы — это геометрические фигуры, которые можно отобразить на экране с помощью специальных функций. Все функции, описанные ниже, имеют тип void far и выполняют следующие действия:

line(int x1, int y1, int x2, int y2) — изображение отрезка прямой;

linerel(int dx, int dy) — изображение отрезка прямой относительно

текущей позиции;

lineto(int x, int у) — изображение отрезка прямой из текущей точки

в точку с заданными координатами;

circle(int x, int у, int radius) — изображение окружности;

arc(int x, int y, int stangle, int endangle, int radius) — изображение дуги радиуса radius с координатами (х, у) от угла stangle до endangle;

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

unsigned far getpixel(int x, int y);