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