Основы современных компьютерных технологий

         

Работа с цветом


В видеобуфере (видеопамяти) для хранения информации о цвете пиксела отводится фиксированное количество битов памяти. Однако практически любой современный видеоадаптер способен отобразить значительно большее количество цветов, чем это определяется количеством битов, отводимых в видеобуфере для одного пиксела. Для использования этой возможности вводится понятие палитры. Палитра - это массив, в котором каждому возможному значению пиксела сопоставляется значение цвета, выводимое на экран. Размер палитры и ее организация зависят от типа используемого видеоадаптера.

При использовании видеокарты EGA/VGA для установки цвета пиксела используется 6 битов. Для формирования цвета используется система RrGgBb, где RGB - красный, зеленый и голубой цвета нормальной яркости, a rgb - те же цвета, но яркость их в два раза меньше. Для EGA/VGA-карт драйвер EGAVGA.BGI устанавливает 54 цвета. В табл. 27.5 приведены 16 основных цветов.

До того момента, пока цвет не определен, для вывода используется цвет, имеющий максимальный номер палитры и фон, устанавливаемый по минимальному номеру. Для EGA- и VGA-адаптеров в качестве фона может быть задано любое целое число в диапазоне 0-63.

Любой цвет для создания фигур и вывода текста может быть установлен с помощью процедуры SetColor(Color: word).

Фон задается процедурой SetBkColor(Color: word).

385

Таблица 27.5

Цвета видеокарты EGA/VGA



КОНСТАНТА ЗНАЧЕНИЕ код ЦВЕТ
EGABIack 0 000000 Черный
EGABlue 1 000001 Синий
EGAGreen 2 000010 Зеленый
EGACyan 3 000011 Сине-зеленый
EGARed 4 000100 Красный
EGAMagenta 5 000101 Красно-синий
EGABrown 6 000110 Коричневый
EGALightGray 7 000111 Светло-серый
EGADarkGray 56 111000 Темно-серый
EGALightBlue 57 111001 Ярко-синий
EGALightGreen 58 111010 Ярко-зеленый
EGALightCyan 59 111011 Яркий сине-зеленый
EGALightRed 60 111100 Ярко-красный
EGALightMagenta 61 111101 Яркий красно-синий
EGAYellow 62 111110 Желтый
EGAWhite 63 111111 Белый
<
/p> Для проверки максимально допустимого количества используемых программой цветов служит процедура GetMaxColor: word, возвращающая максимальное значение кода цвета в палитре минус 1.

Процедуры GetColor: word и GetBKColor: word возвращают номера текущих цветов соответственно для выводимых элементов изображения и для фона.

Для управления палитрами могут быть использованы следующие процедуры и функции:

  • GetDefaultPalette(Var palette: paletteType) - возвращает аппаратную палитру в записи PaletteType;


  • GetPalette(Var palette: PaletteType) - возвращает текущую палитру и ее размер;


  • SetPalette(colorNum: word; color: shortint) - изменяет один цвет палитры, указанный через colorNum и color;


  • SetAIIPalette(Var palette) - изменяет порядок расположения цветов в палитре;


  • GetPaletteSize: integer - возвращает количество цветов в палитре.


  • 386

    385 :: 386 :: Содержание


    Содержание раздела