Palette
 
Настраивает цвета в режимах с палитрой цветов

Синтаксис

Palette [Get] [index, color]
Palette [Get] [index, r, g, b]
Palette [Get] Using arrayname(idx)

Параметры

Get
указывает , что нужно получать информацию о палитре вместо установки информации о палитре
index
индекс палитры
color
атрибут цвета
r
красный компонент цвета
g
зеленый компонент цвета
b
синий компонент цвета
Using
указывает на использование массива значений цветов
arrayname(idx)
массив и индекс, чтобы получить / установить атрибуты цвета

Описание

Оператор Palette используется для получения или установки текущей палитры для графических режимов с глубиной цвета до 8bpp; использование Palette в режиме с более высокой глубиной цвета не будет иметь никакого эффекта. Вызов Palette без аргументов восстанавливает палитру по умолчанию для текущего графического режима, как установлено оператором Screen (Графика).
GfxLib устанавливает палитру по умолчанию , когда инициализируется режим Screen.

Первая форма
Указание индекса и цвета зависит от текущего режима:
Режим экранаиндексный диапазон диапазон цвета
10-30-15
20-10-15
7,80-150-15
90-150-63
110-1 см. ниже
120-15см. ниже
13 to 210-255 см. ниже

В режимах экрана 1, 2, 7, 8 и 9 вы можете назначить каждому индексу цвета один из цветов в доступном диапазоне. В других режимах экрана, цвет должен быть указан в виде &hBBGGRR, где BB, GG и RR являются синим, зеленым и красным компонентом в диапазоне &h0-&h3F в шестнадцатеричном представлении (0-63 в десятичном). Если вам не нравится шестнадцатеричная форма, вы можете использовать следующую формулу для вычисления целого значения для передачи этого параметра:
color = red Or (green Shl 8) Or (blue Shl 16)
Где красный, зеленый и синий компонент должен быть в пределах 0-63. Пожалуйста, обратите внимание, что значения цвета принятое Palette не являются той же формой как возвращаемое значение оператора RGB (перевернутые поля красного и синего, и диапазон отличается); это для обратной совместимости с QB.

Вторая форма
Во второй форме задается красный, зеленый и синий компоненты для записи в палитру напрямую, путем вызова Palette с 4-мя параметрами. В этом случае r, g и b должны быть в диапазоне 0-255.
Третья форма
Вызов Palette Using позволяет задать список значений цветов (все сразу); вы должны передать массив достаточных элементов, как показателей цвета, доступных для текущей глубины графического режима цвета (2 для 1bpp, 4 для 2bpp, 16 для 4bpp или 256 для 8bpp). Элементы массива должны быть целые значения цвета в форме, описанной выше. Цвета хранятся в arrayname начиная с учетом индекса idx , затем присваиваются каждому индексу палитры, начиная с индекса 0.
Форма 1 и 3 для обратной совместимости с QB; форма 2 предназначена для облегчения обработки палитры. Любое изменение в палитре сразу видно на экране.

Если опция Get указывается, Palette извлекает вместо установки значения цветов для текущей палитры. Параметры имеют то же значение, указанное для используемой формы, но в данном случае цвет, r, g и b должны быть переменные, передаваемые по ссылке, которые будут хранить значения цвета RGB на выходе функции.

Пример

' Установка одного цвета, форма 1.
Screen 15
Locate 1,1: Color 15
Print "Press any key to change my color!"
Sleep
' Теперь изменим цвет под индексом 15 в оттенок ярко-красного цвета
Palette 15, &h00003F
Sleep


' Получение одного цвета, форма 2.
Dim As Integer r, g, b
Screen 13
Palette Get 32, r, g, b
Print "Color 32 hues:"
Print Using "Red:### Green:### Blue:###"; r; g; b
Sleep


' Получение всей палитры, форма 3.
Dim pal(0 To 255) As Integer
Screen 13
Palette Get Using pal
For i As Integer = 0 To 15
    Print Using "Color ## = &"; i; Hex(pal(i), 6)
Next i
Sleep


Отличия от QB

  • QBasic не поддерживает PALETTE GET для получения палитры.
  • QBasic не допускает передачи отдельных значений красного, зеленого и синего компонентов.

См. также