CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
setpalette
setpalette
Функция Изменяет один цвет в палитре. Синтаксис #include <graphics.h> void far setpalette(int colornum, int color); Файл, содержащий graphics.h прототип Описание setpalette устанавливает элемент colornum в color. Например, setpalette(0,5) изменяет первый цвет текущей палитры (цвет фона) на цвет, имеющий код 5. Если size - это количество элементов в текущей палитре, то colornum может изменяться от 0 до (size -1). Вы можете частично (либо целиком) поменять цвета в EGA/VGA палитре с помощью setpalette. На CGA же вы можете изменить лишь первый элемент палитры (colornum равен 0, цвет фона). Элементы массива colors, используемые в setpalette, могут быть представлены ввиде символических констант, определенных в graphics.h: ----------------------------------------------------- Таблица доступных цветов ----------------------------------------------------- CGA EGA/VGA Имя Знач Имя Знач. ----------------------------------------------------- BLACK 0 EGA_BLACK 0 BLUE 1 EGA_BLUE 1 GREEN 2 EGA_GREEN 2 CYAN 3 EGA_CYAN 3 RED 4 EGA_RED 4 MAGENTA 5 EGA_MAGENTA 5 BROWN 6 EGA_LIGHTGRAY 7 LIGHTGRAY 7 EGA_BROWN 20 DARKGRAY 8 EGA_DARKGRAY 56 LIGHTBLUE 9 EGA_LIGHTBLUE 57 LIGHTGREEN 10 EGA_LIGHTGREEN 58 LIGHTCYAN 11 EGA_LIGHTCYAN 59 LIGHTRED 12 EGA_LIGHTRED 60 LIGHTMAGENTA 13 EGA_LIGHTMAGENTA 61 YELLOW 14 EGA_YELLOW 62 WHITE 15 EGA_WHITE 63 ----------------------------------------------------- Заметим, что цвета зависят от текущих графического драйвера и графического режима. Изменения, произведенные в палитре, сразу же отражаются на экране. При изменении цвета в палитре, все на экране, окрашенное в этот цвет, станет окрашенным в новый цвет. Замечание. setpalette не может использоваться с драйвером IBM-8514. Возвращаемое Если в setpalette передается ошибочное значение значение, graphresult возвратит -11(grError) а текущая палитра останется без изменений. Переносимость Функция уникальна для Borland C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим. Функция не совместима с Windows. Смотрите также getpalette, graphresult, setbkcolor, setcolor, setrrgbpalette. Пример: #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; int color,maxcolor,ht; int y=10; char msg[80]; /* инициализация графики и локальных переменных */ initgraph(&graphdriver,&gmode,""); /* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormessage(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxcolor = getmaxcolor(); ht = 2*textheight("W"); /* вывести цвета по умолчанию */ for(color=0;color<maxcolor; color++); { setcolor(color); sprintf(msg,"Color %d",color); outtextxy(1,y,msg); y += ht; } /* ожидать нажатия клавиши */ getch(); /* присвоить цветам по одному, значение черного */ for(color=0;color<maxcolor; color++); { setpalette(color,BLACK); getch(); } /* очистка */ closegraph(); return 0; }