CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
setallpalette
setallpalette
Функция Изменяет всю палитру красок. Синтаксис #include <graphics.h> void far setallpalette(struct palettetype far *palette); Файл, содержащий graphics.h прототип Описание setallpalette устанавлмвает текущую политру в значения, заданные в структуре palettetype, на которую указывает параметр palette. Вы можете частично (или полностью) изменить цвета политры EGA/VGA c помощью функции setallpalette. Константа MAXCOLORS и структура palettetype используемые в setallpalette, определены в graphics.h следующим образом: #define MAXCOLORS 15 struct palettetype{ unsigned char size; signed char colors[MAXCOLORS+1]; }; size - содержит количество цветов в палитре для текущего графического драйвера в текущем режиме. colors - массив из size байт, содержащий ряд номеров цветов для каждого элемента палитры. Если элемент в массиве colors равен -1, то цвет палитры для этого элемента не изменяется. Элементы массива colors, используемые в setallpalette, могут быть представлены в виде символических констант, определенных в graphics.h Таблица 2.6. Таблица цветов. ----------------------------------------------------- Таблица доступных цветов ----------------------------------------------------- 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 ----------------------------------------------------- Заметим, что цвета зависят от текущих графического драйвера и графического режима. Изменения, произведенные в палитре, сразу же могут быть увидены на экране. При изменении цвета в палитре, все на экране, окрашенное в этот цвет, станет окрашенным в новый цвет. Замечание. setallpalette не может использоваться с драйвером IBM-8514. Возвращаемое Если в setallpalette передается ошибочное значение значение, graphresult возвратит -11(grError) а текущая палитра останется без изменений. Переносимость Функция уникальна для Borland C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим. Функция не совместима с Windows. Смотрите также getpalette, getpalettesize, graphresult, setbkcolor, setcolor, setpalette. Пример: #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> int main(void) { /* Запрос автоопределения */ int graphdriver = DETECT, gmode, errorcode; struct palettetype pal; 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"); /* получить копию палитры */ getpalette(&pal); /* вывести значения цветов палитры */ for(color = 1; color <= maxcolor; color++) { setcolor(color); sprintf(msg,"Color %d",color); outtextxy(1,y,msg); y += ht; } /* ожидать нажатия клавиши */ getch(); /* присвоить всем у[цветам значение черного */ for(color = 1; color <= maxcolor; color++) { setpalette(color,BLACK); getch(); } /* восстановить цвета палитры */ setallpalette(&pal); /* очистка */ getch(); closegraph(); return 0; }