setlinestyle

Функция            Устанавливает толщину и тип линии.

Синтаксис          #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 и совместимых с ни-
                   ми, оснащенных дисплейными адаптерами, поддержи-
                   вающими графический режим.

Смотрите также      arc bard circle drawpoly ellipse
                    getlinesettings graphresult line linerel                    lineto pieslice rectangle

Пример:

#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;
}