Синтаксис
#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, могут быть представлены в виде символических констант.
Изменения, произведенные в палитре, сразу же отражаются на экране. При изменении цвета в палитре, все на экране, окрашенное в этот цвет, станет окрашенным в новый цвет.
Замечание. Функция setpalette не может использоваться с драйвером IBM-8514.
Возвращаемое значение
Если в setpalette передается ошибочное значение, graphresult возвратит -11(grError), а текущая палитра останется без изменений.
Переносимость
Функция уникальна для Borland C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим. Функция не совместима с Windows.
Пример
#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();
}