Referenz - ALPHA
Syntax: { PUT | DRAW STRING } [Puffer, ] [STEP] (x, y), [ weitere Angaben ... ], ALPHA [, alphawert]
Typ: Schlüsselwort
Kategorie: Grafik
ALPHA ist ein Schlüsselwort, das im Zusammenhang mit PUT (Grafik) und DRAW STRING eingesetzt wird.
Mit ALPHA lassen sich Transparenz-Effekte erzeugen. Die ALPHA-Methode wird verwendet, um Bildschirmausschnitte 'durchscheinend' auszugeben; das Ergebnis der Bildschirmausgabe ist eine 'Mischfarbe' aus dem Pixel, das überzeichnet wurde, und dem, das im Quellpuffer gespeichert war.
Das Aktionswort ALPHA ist nur in High-/Truecolor-Modi verfügbar, also in Modi ab 15bpp.
'alphawert' stellt den Transparenzgrad des zu zeichnenden Ausschnitts bzw. das Mischungsverhältnis der beiden Farben dar; 255 bedeutet dabei volle Überdeckung, 0 keine Überdeckung. 127 ist der exakte Mittelwert zwischen den beiden Farben. Ebenso wie bei TRANS und ADD werden Pixel in der Maskenfarbe nicht gezeichnet (siehe dazu auch Interne Pixelformate).
In 32bpp-Modi ist es auch zulässig, den Parameter 'alphawert' auszulassen; in diesem Fall benutzt FreeBASIC den Alphawert, der für jedes Pixel einzeln angegeben wurde. Dies ist nur in 32bpp-Modi möglich, da nur hier ein eingebetteter Alphawert für jedes Pixel möglich ist; siehe dazu auch Interne Pixelformate.
Wird 'alphawert' ausgelassen, jedoch ein Modus mit einer Farbtiefe unter 32bpp verwendet, so geht FreeBASIC von alphawert = 255 aus; dies entspricht völliger Überdeckung bzw. dem Aktionswort TRANS.
Beispiel:
' 32-bit-Bildschirm erstellen
ScreenRes 320, 200, 32
' schachbrettartigen Hintergrund zeichnen
For y As Integer = 0 To 199
For x As Integer = 0 To 319
PSet (x, y), IIf((x Shr 2 Xor y Shr 2) And 1, RGB(160, 160, 160), RGB(128, 128, 128))
Next x
Next y
' Sprite erstellen
Dim img As Any Ptr = ImageCreate(32, 32, RGBA(0, 0, 0, 0))
For y As Single = -15.5 To 15.5
For x As Single = -15.5 To 15.5
Dim As Integer r, g, b, a
If y <= 0 Then
If x <= 0 Then
r = 255: g = 0: b = 0 ' rot
Else
r = 0: g = 0: b = 255 ' blau
End If
Else
If x <= 0 Then
r = 0: g = 255: b = 0 ' gruen
Else
r = 255: g = 0: b = 255 ' magenta (transparente Maskenfarbe)
End If
End If
a = 255 - (x ^ 2 + y ^ 2)
If a < 0 Then a = 0: r = 255: g = 0: b = 255
PSet img, (15.5 + x, 15.5 - y), RGBA(r, g, b, a)
Next x
Next y
' mit verschiedenen Alphawerten zeichnen; TRANS dient zum Vergleich
Draw String (32, 10), "Single alpha"
Put (80 - 16, 50 - 16), img, Alpha, 64
Put (80 - 16, 100 - 16), img, Alpha, 192
Put (80 - 16, 150 - 16), img, Trans
' mit vollem Alphakanal zeichnen
Draw String (200, 10), "Full alpha"
Put (240 - 16, 100 - 16), img, Alpha
' Speicher freigeben und auf Tastendruck warten
ImageDestroy img
Sleep
Unterschiede zu QB: neu in FreeBASIC
Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.14
Siehe auch:
PUT (Grafik), DRAW STRING, SCREENRES, AND (Methode), OR (Methode), XOR (Methode), PSET (Methode), PRESET (Methode), ADD, TRANS, CUSTOM, Grafik
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|