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

Синтаксис

#define RGBA(r,g,b,a) ((CUInt(r) Shl 16) Or (CUInt(g) Shl 8) Or CUInt(b) Or (CUInt(a) Shl 24))

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

result = RGBA(red, green, blue, alpha)

Parameters

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

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

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

Описание

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

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

Пример

'Открываем графический экран (320 * 240, 32-бита)
ScreenRes 320, 240, 32

Dim As Any Ptr img
Dim As Integer x, y

'Создаем изображение, которое изменяется по прозрачности и цвету
img = ImageCreate(64, 64)
For x = 0 To 63
  For y = 0 To 63
    PSet img, (x, y), RGBA(x * 4, 0, y * 4, (x + y) * 2)
  Next y
Next x
Circle img, (31, 31), 25,      RGBA(0, 127, 192, 192), ,,, F 'полупрозрачный синий круг
Line   img, (26, 20)-(38, 44), RGBA(255, 255, 255, 0),    BF 'прозрачный белый прямоугольник

'Рисуем фон (диагональные белые линии)
For x = -240 To 319 Step 10
  Line (x, 0)-Step(240, 240), RGB(255, 255, 255)
Next

Line (10,  10)-(310,  37), RGB(127, 0, 0), BF 'красный прямоугольник для текста
Line (10, 146)-(310, 229), RGB(0, 127, 0), BF 'зеленый прямоугольник для вывода на него

'Рисуем изображение и текст с PSET
Draw String(64, 20), "PSet"
Put(48,  48), img, PSet
Put(48, 156), img, PSet

'Рисуем изображение и текст с ALPHA
Draw String (220, 20), "Alpha"
Put(208,  48), img, Alpha
Put(208, 156), img, Alpha



'Освобождаем память изображения
ImageDestroy img

'Оставляем окно открытым до тех пор, пока пользователь не нажмет клавишу
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 = RGBA(255, 192, 64, 128)

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 , но есть псевдоним __Rgba.

Отличия от QB

  • Новое в FreeBASIC

См. также