Информация о виде вычерчиваемых прямолинейных отрезков с помощью функции getlinesettings заносится в структуру, объявленную в graphics.h как
struct linesettingstype {
int linestyle; // тип линии — сплошной, точками …
unsigned upattern; // 16 точек отображаемых по битам
int thickness;} // толщина линии равная 1 либо 3
Пример 1.4
struct linesettingstype lineinfo;
getlinesettings (&lineinfo);
…
Установку новых атрибутов вывода отрезков можно произвести с помощью функции voidsetlinestyle(intlinestyle,unsignedupattern,intthickness), где linestyle принимает одно из следующих значений:
![]() |
Если linestyle=USERBIT_LINE, то upattern представляет собой шаблон заполнения линии точками, при этом отображаются те точки, биты которых равны 1. Например, после
setlinestyle(USERBIT_LINE,5,1);
line(0,10,getmaxx(),10);
на экран будут выведены точки (13,10), (15,10), (29,10), (31,10), … , (637,10), (639,10). Толщина линии задается с помощью аргумента thickness, а именно: NORM_WIDTH – тонкая линия, THICK_WIDTH – утолщенная линия /5/.
Атрибуты заполнения областей с помощью функции voidgetfillsettings(structfillsettingstypefar*fillinfo); возвращаются в структуру
struct fillsettingstype {
int pattern; // шаблон заполнения
int color;} // цвет заполнения
Здесь pattern принимает значения:
0 EMPTY_FILL заполнение цветом фона
1 SOLID_FILL сплошное заполнение
2 LINE_FILL заполнение символами тире
3 LTSLASH_FILL заполнение символами слеш (/)
4 SLASH_FILL заполнение символами слеш (толстая)
5 BKSLASH_FILL символами обратная слеш (толстая)
6 LTBKSLASH_FILL символами обратная слеш ()
7 HATCH_FILL штрихи
8 XHATCH_FILL толстые штрихи
9 INTERLEAVE_FILL полосы
10 WIDEDOT_FILL редкие точки
11 CLOSEDOT_FILL густые точки
12 USER_FILL шаблон задан пользователем
Установка шаблона, заданного пользователем, задается с помощью функции voidsetfillpattern(charfar*pattern,intcolor),где pattern — символьный массив, k-й элемент которого при k=0,1,…,7 содержит отображаемые пикселы k-й строки шаблона 8×8.
Пример 1.5. Чтобы установить шаблон заполнения «+», достаточно задать массив pattern как:
unsigned char pattern[]={
0x18, // 00011000
0x18, // 00011000
0x18, // 00011000
0xFF, // 11111111
0xFF, // 11111111
0x18, // 00011000
0x18, // 00011000
0x00} // 00000000
Пример 1.6. Последовательный вывод заполнения прямоугольников с различными шаблонами заполнения.
int style;
for (style=EMPTY_FILL;style<USER_FILL;style++)
{
setfillstyle(style,WHITE);
bar (getmaxx()/4, getmaxy()/4,
getmaxx()*3/4, getmaxy()*3/4);
}
setfillpattern(pattern,WHITE);
bar (getmaxx()/4, getmaxy()/4, getmaxx()*3/4,
getmaxy()*3/4);
Закраску области можно осуществить с помощью функции floodfill(int x, int y, int Border). При этом закрашивается по заранее заданному шаблону внутренняя область, содержащая точку с экранными координатами (x,y) и ограниченная линией (границей), цвет которой задается аргументом Border. Шаблон и цвет закраски области могут быть заданы с помощью функций setfillstyle и setfillpattern. Если точка с координатами (x,y) находится за пределами области, то закрашивается внешняя часть этой области, ограниченная краями графического окна /5/.