Библиотека графических примитивов языка Си

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

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

В языке Turbo C имеются следующие функции вывода основных графических примитивов, библиотеки graphics. h

Вывод точки (пиксела) на экран осуществляется функцией

Void far putpixel (int x, int y, int pixelcolor)

Где Х,У – координаты пиксела, а pixelcolor – код цвета.

Для задания квадратной формы пиксела существует следующая функция

Void far setaspeetratio (int xasp, int yasp)

Например, если известно, что высота пиксела в 1,2 раза больше чем его ширина, то данная функция примет вид

Setaspeetratio (100,120)

Стиль вывода линий задается функцией

# inelude <graphics. h>

void far setlinestyle (int linestyle, unsugned upattern, int thickness),

в которой переменная linestyle выбирается в соответствии с таблицей 99.

Таблица 99 Задание стиля линий.

Символическая константа значение Описание стиля линии
SOLID_LINE DOTTED_LINE CENTER_LINE DACHED_LINE USERBII_LINE   Сплошная линия Линия из точек Штрих-пунктирная линия Штриховая линия Определенная пользователем линия

Толщина линии (thickness) устанавливается в соответствии с таблицей 100.

Таблица 100. Толщина линий в Turbo C.

Символическая константа значение Описание стиля линии
NORM_WIDTH THICK_WIDTH   1 пиксел 3 пиксела

Аргумент upattern задается при значении стиля линий, равном 4. Если значение upattern равно 1, то пиксел выводится текущим цветом.

Режим вывода линии устанавливается функцией

Void far line (int mode)

Параметр mode принимает следующие значения: COPY. PUT (0) – пикселы мыши переопределяют пикселы экрана; XOR_PIT (1) – пикселы мыши получаются в результате исключающего ИЛИ их цвета и цвета пикселов на экране.

Функция

Void far line (int x1, int y1, int x2, int y2)

Выводит отрезок линии между точками х1, у1 и х2, у2. Эти координаты задаются относительно верхнего угла текущего графического окна.

Функция

Void far linerel (int dx, int dy)

Выводит отрезок прямой линии между текущей позицией (начало отрезка) и точкой, задаваемой приращением dx и dy относительно начала.

Текущая позиция устанавливается функциями:

Void far moveto (int x, int y)

Void far moverel (int dx, int dy)

Void far lineto (int x, int y)

Выводит отрезок прямой линии между текущей позицией (начало отрезка) и точкой, заданной координатами х, у.

Void far arc (int x, int y, int stangle, int endangle, int radius)

Выводит дугу радиусом radius. Начальный stangle и конечный endangle углы дуги отсчитываются против хода часовой стрелки от направления соответствующего положению часовой стрелки 3 часа.

Void far getarecoords (struct arccordstype far * arccord)

Заполнят поля структуры

Struct arccordtupe

{ int x,y: /*координаты центра дуги */

int xstart, ystart; /*пиксельные координаты начальной точки */

int xend, yend: /* пиксельные координаты конечной точки */

}

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

Void far bar3d (int left, int top, int right, int bottom, int depth, int topflag)

Выводит в изометрии столбик. Аргументы задают: пиксельные координаты левого верхнего (lef, top) и правого нижнего (right, bottom) углов области экрана, глубину в пикселах (depth) изображенного столбика, необходимость изображения верхней поверхности столбика (topflag).

Если topflag=0, то верхняя поверхность не изображается.

Void far cirele (int x, int y, int radius)

Выводит окружность радиуса radius с координатами центра Х,У.

Void far drawpoly (int numpoints, int far polypoints [ ])

Соединяет отрезками прямых линий текущего цвета и стиля точки (полигон), координаты которых заданы парами значений. Эти пары расположены в массиве, на который указывает polypoints. Аргумент numpoints определяет количество соединяемых между собой точек. Для получения замкнутого контура задаются равными первая и последняя точки.

Режим вывода отрезков задается функцией

Void far setwrite mode (int mode)

Область экрана внутри базируемого полигона может быть заполнена с использованием текущего цвета и стиля функцией

Void far fillpoly (int numpoints, int far * polypoints)

Эта функция выводит контур полигона цветом, устанавливаемым функцией

Setcolor

Кроме того, цвет и маска заполнения могут быть заданы с помощью функций

Void far set fillpattern (char * upattern, int color)

Void far getfillpattern (char far * pattern)

Функция

Void far ellipse (int x, int y, int stangle, int end angle, int xradius, int yradius)

Выводит эллиптическую дугу или полный эллипс соответственно с большой xradius и малой yradius полуосями. Аргументы stangle и endangle имеют тот же смысл, что и для окружности Х,У – центр эллипса.

Void far ellipse (int x, int y, int xradius, int yradius)

Выводит эллипс, заполненный текущим цветом. Цвет и маска заполнения устанавливается так же, как и для полигона (функция fillpoly()).

Void far floodfill (int x, int y, int border)

Заполняет текущим стилем область экрана, ограниченную непрерывной линией с цветом border, начиная с точки с координатами (Х,У). Если точка находится внутри области – заполняется внутренняя область. Если вне области– заполняется внешняя.

Void far piesliee (int x, int y, int stangle, int endagle, int radius)

Выводит контур кругового сектора и заполняет его внутреннюю область текущим стилем (функции setlinestyle (), setfillpattern(), setfillstyle ())

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

Выводит контур прямоугольника с принятыми координатами. Цвет контура и стиля линии задается следующими функциями соответственно setcolor (),setlinestyle ().

Void far sector (int x, int y, int stangle, int endangle, int xradius, int yradius)

Выводит эллиптический сектор. Она полностью аналогична функции piesliee ().

Кроме названных в данном параграфе примитивов библиотеки языка Си можно строить новые примитивы. Объединение функций построения этих примитивов в один пакет приводит к новой библиотеки примитивов.

Такой пакет записывается в отдельный файл, который может вызываться оператором # include "имя файла" языка Си. Более подробно об этом описано при рассмотрении библиотеки условных знаков.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: