Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - RGBA

Referenz-Navigation

 

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

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 BefehlsreferenzeintragRGB, 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 "Farbe: _&h\      \"; Hex(col, 8)

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

Print
Print Using "Rot:         _&h\\ = ###"; Hex(r, 2); r
Print Using "Gruen:       _&h\\ = ###"; Hex(g, 2); g
Print Using "Blau:        _&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 Befehlsreferenzeintrag-lang qb steht RGBA nicht zur Verfügung und kann nur über __RGBA aufgerufen werden.

Siehe auch:
BefehlsreferenzeintragRGB, BefehlsreferenzeintragCOLOR (Anweisung), BefehlsreferenzeintragDEFINE (Meta), BefehlsreferenzeintragGrafik


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 05.08.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 15.10.2012 von Redakteurnemored gespeichert.
  Versionen Versionen