Функция Устанавливает толщину и тип линии.
Синтаксис #include
void far setlinestyle(int linestyle,
unsigned upattern, int thickness);
Файл, содержащий graphics.h
прототип
Описание Устанавливает тип для всех линий, рисуемых
функциями line, lineto, rectangle, drawpoly и
т.д.
Структура linesettingstype определена в
graphics.h следующим образом:
struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;
};
linestyle определяет тип линий, который будет ис-
пользоваться (непрерывная, пунктир, штрихпунктир,
штриховая). Перечисленные line_styles, определен-
ные в graphics.h, дают названия этим операциям:
-------------------------------------------
Название Знач. Описание
-------------------------------------------
SOLID_LINE 0 сплошная
DOTTED_LINE 1 пунктир
CENTER_LINE 2 штрихпунктир
DASHED_LINE 3 штриховая
USERBIT_LINE 4 тип линии, заданный
пользователем
-------------------------------------------
thickness определяет будут ли последующие линии
тонкими или толстыми.
-------------------------------------------
Название Знач. Описание
-------------------------------------------
NORM_WIDTH 1 толшина в 1 пиксел
THICK_WIDTH 3 толщина в 3 пиксела
-------------------------------------------
upattern -это 16-битный шаблон, который использу-
ется только когда linestyle равен USERBIT_LINE
(4). В этом случае, каждый бит в шаблоне установ-
ленный в 1, соответствует пикселю на линии в те-
кущем цвете. Например, сплошной линии соответстс-
вует upattern равный 0xFFFF (рисуются все пиксе-
лы), а пунктиру соответствует upattern равный
0x3333 или 0x0F0F. Если же параметр linestyle в
setlynestyle не равен USERBIT_LINE (!=4), то
upattern поддерживается, но игнорируется.
Замечание. Параметр linestyle не работает при
построении дуг, кругов, эллипсов и секторов. В
этом случае используется пареметр thickness.
Возвращаемое Если в setlinestyle передается неправиль-
значение ный ввод, graphresult возвратит -11, а теку-
щий тип линии останется без изменений.
Переносимость Функция уникальна для Turbo C++. Она работает
только на компьютерах IBM PC и совместимых с ни-
ми, оснащенных дисплейными адаптерами, поддержи-
вающими графический режим.
Смотрите также arcbardcircledrawpolyellipsegetlinesettingsgraphresultlinelinerellinetopieslicerectangle
Пример:
#include
#include
#include
#include
/* имена поддерживаемых типов линий */
char lname[] = {"SOLID_LINE",
"DOTTED_LINE",
"CENTER_LINE",
"DASHED_LINE",
"USERBIT_LINE"
};
int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int midx,midy,style,userpat;
char stylestr[80];
/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk) /* если ошибка */
{
printf("Ошибка :%s\n",grapherrormsg(errorcode));
printf("Для останова нажмите любую клавишу\n");
getch();
exit(1); /* завершение с кодом ошибки */
}
midx = getmaxx()/2;
midy = getmaxy()/2;
/* пользовательский шаблон: 1 (двоичный:0000000000000001) */
userpat = 1;
for(style = SOLID_STYLE; style <= USERBIT_STYLE; style++)
{
/* установить тип линии */
setlinestyle(style,userpat,1)
/* пребразовать в строку */
strcpy(stylestr,lname[style]);
/* нарисовать линию */
line(0,0,midx-10,midy);
/* нарисовать прямоугольник */
rectangle(0,0,getmaxx(),getmaxy());
/* вывести сообщение */
outtextxy(midx,midy,stylestr);
/* ожидать нажатия клавиши */
getch();
cleardevice();
}
/* очистка */
closegraph();
return 0;
}