RGBA

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » R » RGBA

Syntax: RGBA(rot, grün, blau, alpha)
Typ: Funktion
Katerorie: Gfx

RGBA errechnet die gültige 32-Farbnummer in hi/truecolor-Bildschirmmodi bei angegebenem Rot-, Grün-, Blau- und Alphawert der Farbe.

RGBA arbeitet genauso wie RGB, abgesehen von der Möglichkeit, einen Alphawert (Transparenzgrad) anzugeben. Es ist ein Makro, das folgendermaßen definiert ist:

#DEFINE RGBA(r,g,b,a) ((CUINT(r) SHL 16) OR (CUINT(g) SHL 8) OR CUINT(b) OR (CUINT(a) SHL 24))

Beispiel 1: Zeichnen mit halbtransparenten Bildern

ScreenRes 320, 240, 32  ' Grafikfenster erstellen

Dim As Any Ptr img
Dim As Integer x, y

' Bild mit verschiedenen Transparenzstufen und Farben erstellen
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 ' halbtransparenter blauer Kreis
Line   img, (26, 20)-(38, 44), RGBA(255, 255, 255, 0),    BF ' transparentes weißes Rechteck

' Hintergrund zeichnen (diagonale weiße Strecken)
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 ' rotes Rechteck
Line (10, 146)-(310, 229), RGB(0, 127, 0), BF ' grünes Rechteck

' Bild zeichnen mit PSET
Draw String(64, 20), "PSet"
Put(48,  48), img, PSet
Put(48, 156), img, PSet

' Bild zeichnen mit ALPHA
Draw String (220, 20), "Alpha"
Put(208,  48), img, Alpha
Put(208, 156), img, Alpha

' Speicher freigeben und Programm beenden
ImageDestroy img
Sleep

Beispiel 2: Auslesen einzelner Farbkomponenten aus einem RGBA-Wert

#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

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:
Die Version __RGBA in der Dialektform -lang qb existiert erst seit FreeBASIC v0.24.

Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht RGBA nicht zur Verfügung und kann nur über __RGBA aufgerufen werden.

Siehe auch:
RGB, COLOR (Anweisung), DEFINE (Meta), Grafik