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