Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_новое.DOC
Скачиваний:
7
Добавлен:
28.09.2019
Размер:
486.4 Кб
Скачать

Void far initgraph(int far *driver, int far *mode, char far *path);

Здесь и далее far обозначает “дальний адрес”.

Функция graphresult() возвращает код ошибки, который присваивается переменной errorcode. При нормальной инициализации код ошибки равен нулю (макрос grOK соответствует сообщению No error). Если возникают ошибки (не найден драйвер, недостаточно памяти для загрузки драйвера и т.д.), то код не равен нулю.

Функция grapherrormsg() по коду ошибки возвращает соответствующее сообщение, которое с помощью функции printf() выводится на экран монитора. Функция getch() позволяет прочитать это сообщение. Выход из программы осуществляется по оператору exit().

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

Функция line() имеет прототип line(int x, int y, int x1, int y1). Она рисует линию из точки с координатами (x,y) в точку с координатами (x1,y1).

Функция closegraph() освобождает память, использующую графические функции.

В примере 7.9 используется еще ряд функций из графического модуля:

//Пример 7.9.

// Пример работы в графическом режиме

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

Void main(void)

{

Int driver, mode, errorcode;

register int i;

driver = DETECT;

initgraph(&driver, &mode, "c:\bc\bgi\egavga.bgi");

errorcode = graphresult();

if (errorcode != grOk) // если произошла ошибка

{ printf("Ошибка:%s\n", grapherrormsg(errorcode));

printf("Для останова нажмите любую клавишу\n");

getch();

exit(1); // для завершения работы

}

rectangle(0,0,639,349);

setcolor(RED);

line(0,0,639,349);

line(0,349,639,0);

setfillstyle(5,GREEN);

bar(50,50,300,300);

setviewport(100,100,200,200,1);

getch();

clearviewport();

for (i=3; i<83; i++)

circle(50,50,i);

getch();

restorecrtmode();

}

Инициализация графического режима производится по рассмотренной выше схеме.

Функция rectangle() рисует прямоугольник, левый верхний угол которого имеет координаты (0,0), а правый нижний — (639, 479). Ее прототип:

Void far rectangle(int left, int top, int right, int bottom);

Функция setcolor() устанавливает цвет линий, в скобках может быть указано название или код цвета. Перечень наиболее часто употребляемых цветов и их коды дан в табл. 7.4.

Функция setfillstyle() устанавливает способ и цвет заполнения, ее прототип: void far setfillstyle(int pattern, int color). В табл. 7.5 даны некоторые способы заполнения.

Таблица 7.4 —Цвета и соответствующие коды

Название цвета (CGA)

Код

Название цвета (CGA)

Код

BLACK

BLUE

GREEN

CYAN

RED

MAGENTA

BROWN

LIGHTGRAY

0

1

2

3

4

5

6

7

DARKGRAY

LIGHTBLUE

LIGHTDREEN

LIGHTCYAN

LIGHTRED

LIGHTMAGENTA

YELLOW

WIGHT

8

9

10

11

12

13

14

15

Таблица 7.5 — Варианты заполнения замкнутых контуров

Код

Наименование способа

0

1

2

3

4

5

Заполнение цветом фона

Заполнение сплошное заданным фоном

Линиями —

Косыми линиями ///

Яркими косыми линиями ///

Обратными косыми линиями \\\

Функция bar() имеет прототип void far bar(int x, int y, int x1, int y1) и заполняет прямоугольник с координатами левого верхнего угла (x, y) и нижнего правого угла — (x1, y1) цветом и способом, которые заданы функцией setfillstyle().

Функция setviewport() создает графическое окно с произвольными размерами. Если окно совпадает с экраном, то использовать эту функцию не надо. Ее прототип:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]