Здавалка
Главная | Обратная связь

Растровая графика линейных объектов



Цель работы: приобретение навыков работы с графическим редактором в среде Турбо СИ.

 

Содержание работы

 

Для начала обсудим и разберем простейшую программу, в которой используется несколько графических функций, имеющихся в Турбо СИ.

В графическом режиме экран дисплея представляется в виде чертежного поля с прямоугольной системой координат Х, Y, начало которой расположено в верхнем левом углу. Координаты выражаются целыми числами в диапазоне от 0 до некоторого максимального значения, зависящего от применяемого графического адаптера. Это максимальное значение будем обозначать Xmax и Ymax , где X и Y -прописные буквы, принятые для того, чтобы предотвратить путаницу с x_max и y_max, используемые в программах для различных целей. Экранные координаты показаны на рис.1.

 

0 Xmax

 
 
 
 
 
 
 

Ymax

 

Рис.1

 

Рассмотрим элементы простейшей программы для рисования прямоугольных треугольников.

/*TRIA*/

# include <graphics.h>

# include < conio.h>

main ()

{ int gdriver = DETECT, gмode, Xmax , Ymax ;

initgraph(&gdriver, &gmode,“c:\\tc\\bin”);

Xmax = getmaxx(); Ymax = getmaxy();

moveto(0, Ymax); /*Перемещение курсора в нижний левый угол*/

lineto (Xmax, Ymax); /*Вычерчивание нижнего катета*/

lineto (0,0); /*Вычерчивание гипотенузы*/

lineto (0, Ymax); /*Вычерчивание катета*/

getch();

closegraph();

}

Программа содержит обращение к некоторым графическим функциям Турбо СИ. Заголовочный файл GRAPHICS.H содержит объявление большого числа таких файлов, но мы рассмотрим только некоторые, перечисленные ниже.

void far initgraph ( int far * graphdriver,

int far * graphmode,

char far * pathdriver );

int far getmaxx(void);

int far getmaxy(void);

void far moveto (int x, int y);

void far lineto (int x, int y);

void far line (int x1, int y1, int x2, int y2);

void far closegraph(void);

 

Появление ключевого слова far заставит компилятор использовать форматы “длинных” указателей. Если бы они были опущены, то при малой модели памяти могли бы появиться конфликтующие форматы указателей.

Первая из перечисленных функций initgraph() переключает компьютер из текстового в графический режим. Она имеет три параметра, которые перечислены ниже вместе с соответствующими аргументами.

 

Параметр Аргумент

graphdriver &gdriver

graphmode &gmode

pathdriver “\\tc”

 

Если для параметра graphdriver будет указана переменная DETECT (значение которой в файле GRAPHICS.H по умолчанию установлено равным 0), то вид адаптера будет устанавливаться автоматически. Кроме того, переменной gmode, указанной в качестве второго аргумента, будет присвоен код наивысшей разрешающей способности. Наконец, в качестве третьего аргумента задается каталог, в котором записан графический адаптер, например, HERC.RGI, в формате текстовой строки.

Функция closegraph() закрывает графический режим работы.

Функции getmaxx() и getmaxy() возвращают наибольшее значение по координатным осям x и y, которые можно использовать в текущем графическом режиме. Эти значения зависят от типа применяемого графического адаптера. В нашей программе эти значения будут сохранены, так что их можно будет использовать многократно без повторного обращения к функциям getmaxx () и getmaxy().

Фактическое вычерчивание треугольника выполняется путем обращения к функциям moveto() и lineto(). Координаты здесь определяются целыми числами, обозначающими номера пикселов. Обращение к функции moveto(x,y) означает перемещение курсора из исходной точки в точку с координатами x и y без вычерчивания линии, а функция lineto(x,y) выполняет аналогичное перемещение, но с вычерчиванием линии.

Вместо последовательности обращений moveto(x1,y1); lineto(x2,y2); lineto (x3,y3);

можно записать

line (x1,y1,x2,y2);

line (x2,y2,x3,y3);

К функциям, рисующим линии, относится также функция linerei(), которая рисует линию из текущей точки в точку, задаваемую относительным расстоянием.

Для рисования линий может использоваться также функция setlinestyle(). Она устанавливает ширину и стиль линии, например:

setlinestyle(SOLID_LINE, 0, NORM_WIDTH) устанавливает стиль сплошной линии, цвета фона, нормальной толщины.

 

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.