RGB
 
Вычисляет действительное значение цвета для полноцветных режимов

Синтаксис

#define RGB(r,g,b) ((CUInt(r) Shl 16) Or (CUInt(g) Shl 8) Or CUInt(b) Or &hFF000000)

Использование

result = RGB(red, green, blue)

Параметры

red
значение красного компонента цвета
green
значение зеленого компонента цвета
blue
значение синего компонента цвета

Возвращаемое значение

Комбинированный цвет.

Описание

red, green и blue компоненты в диапазоне 0-255.

Функция RGB может использоваться для вычисления значения действительного цвета, для использования в полноцветных режимах. Она возвращает целое число без знака в формате &hAARRGGBB, где RR, GG и BB равны значениям, передаваемым этой функции, в шестнадцатеричном формате. AA является неявным значением альфа и автоматически устанавливается в &hFF (непрозрачный).
Это позволяет получить red, green, blue и alpha значения из значения цвета, с помощью сочетания And и Shr. Во втором примере ниже показано как #define(объявляются) и используются макросы для этого.

Примечание для Windows API программистов: Макрос с именем RGB в ссылках Windows был переименован в BGR в заголовках FB для Windows, чтобы избежать столкновений.

Пример

Смотрите пример Put (Графика) дополнительно.

ScreenRes 640,480,32  '32-битный цвет
Line(0,0)-(319,479), RGB(255,0,0) 'Рисуем ярко-красный прямоугольник в левой части окна
Line(639,0)-(320,479), RGB(0,0,255) 'Рисуем ярко-синий прямоугольник в правой части окна

Sleep 'ожидание перед выходом


'' Установка и получение Red, Green, Blue и Alpha значений

#define RGBA_R( c ) ( CUInt( c ) Shr 16 And 255 )
#define RGBA_G( c ) ( CUInt( c ) Shr  8 And 255 )
#define RGBA_B( c ) ( CUInt( c )        And 255 )
#define RGBA_A( c ) ( CUInt( c ) Shr 24         )

Dim As UInteger r, g, b, a

Dim As UInteger col = RGB(128, 192, 64)

Print Using "Color: _&H\      \"; Hex(col, 8)

r = RGBA_R( col )
g = RGBA_G( col )
b = RGBA_B( col )
a = RGBA_A( col )

Print
Print Using "Red:         _&H\\ = ###"; Hex(r, 2); r
Print Using "Green:       _&H\\ = ###"; Hex(g, 2); g
Print Using "Blue:        _&H\\ = ###"; Hex(b, 2); b
Print Using "Alpha:       _&H\\ = ###"; Hex(a, 2); a


Различия диалектов

  • Не доступно в диалекте -lang qb , но есть псевдоним __Rgb.

Отличия от QB

  • Новое в FreeBASIC

См. также