setlinestyle
Функция Устанавливает толщину и тип линии.
Синтаксис #include <graphics.h>
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, а текущий тип
линии останется без изменений.
Переносимость Функция уникальна для Borland C++. Она работает
только на компьютерах IBM PC и совместимых с ними,
оснащенных дисплейными адаптерами, поддерживающими
графический режим. Функция не совместима с
Windows.
Смотрите также arc, bar3d, circle, drawpoly, ellipse,
getlinesettings, graphresult, line, linerel
lineto, pieslice, rectangle.
Пример:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
/* имена поддерживаемых типов линий */
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",grapherrormessage(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;
}
|