Hilfe

MaskImage

B2D B+ B3D

Aufruf

MaskImage Bild, red, green, blue

Parameter

Bild Identität des Bildes (z.B. mit LoadImage ermittelt
red Rotanteil einer Farbe (0=wenig, 255=viel)
green Grünanteil einer Farbe (0=wenig, 255=viel)
blue Blauanteil einer Farbe (0=wenig, 255=viel)


Rückgabewert

-


Beschreibung

Diese Anweisung setzt die Transparenzfarbe eines Bildes. Normalerweise wird ein Objekt als rechteckiges Bild auf dem Bildschirm erscheinen. Mit diesem Befehl wird eine bestimmte Farbe ausgewählt, die dann nicht mehr eingezeichnet wird. Jedem Bild wird zuerst die schwarze Farbe als MaskColor zugewiesen. Da die schwarze Farbe sehr häufig in Bildern vorkommt, kann man auch eine andere Farbe auswählen - z.B. rot oder lila.

Achtung: Im 16 Bit-Modus gibt es nicht so viele Farbabstufungen, wodurch dann auch sehr ähnliche Farben transparent erscheinen. Um dies zu umgehen, sollte man eine bunte Transparentfarbe auswählen (die im Bild sonst nicht vorkommt - z.B. lila).

Benutze DrawImage oder DrawImageRect, um ein solches Bild auf dem Bildschirm darzustellen.


Zusatzinformationen

Die Farbe auf allen Bildschirmen wird aus den drei Grundfarben des additiven Farbmodells zusammengemischt - rot, grün und blau. Es können somit zwar nicht alle sichtbaren Farben abgedeckt werden, dennoch sind es sehr viele. Je größer der Lichtanteil einer Farbe, desto heller wird das Licht. Werden z.B. alle drei Grundfarben zusammengemischt, so entsteht weißes Licht.


Bei einem 16-Bit Grafikmodus können nicht alle Farben dargestellt werden. Dadurch können Farbsprünge entstehen und eine leicht verfälschte Farbe ermittelt werden. Benutze eine höhere Farbtiefe, um dies zu verhindern.


Wie 16 Bit-Farben intern verwaltet werden:
Die Bits 0-4 (5x) speichern den Blauanteil.
Die Bits 5-10 (6x) speichern den Grünanteil.
Die Bits 11-15 (5x) speichern den Rotanteil.
Logischerweise können Blau- und Rotanteile nur 32 verschiedene Abstufungen von 0 bis 248 im Abstand von 8 aufweisen. Grünanteile können dagegen 64 verschiedene Abstufungen von 0 bis 254 im Abstand von 4 aufweisen. Dies kann man für bessere Farben ausnutzen: Wähle eine Farbe, die auch im 16 Bit-Modus korrekt dargestellt wird - z.B. anstelle der Farbe 255,255,255 besser 248,248,248 nehmen.

Diese Fehlermeldungen erscheinen, wenn ein Bild im Grafikspeicher nicht gefunden werden konnte. Dafür gibt es mehrere Gründe:

- Ein Bild konnte auf dem Datenträger nicht gefunden werden
- Die Grafikdatei ist fehlerhaft
- Der Grafikspeicher wurde mit Graphics gelöscht
- Wert der Variable "Bild" wurde gelöscht
- Die Variable "Bild" hat einen falschen Namen
- Die Variable "Bild" wurde nicht als Global definiert
- Siehe auch GraphicsLost (nur Blitz3D)


Alternativ könnte auch die Fehlermeldung "Memory access violation" stehen, diese taucht jedoch meist nur bei ausgeschaltetem Debugger auf. Es empfiehlt sich dann den Debugger zu aktivieren um genauere Erkenntnisse über den Fehler zu erhalten.


Beispiel

Dieses Beispiel lädt ein Animationsbild (Pfad evtl. anpassen!) und zeichnet es animiert mit einer transparenten Farbe ein:

Graphics 640, 480, 16
SetBuffer BackBuffer()
gfxSparks = LoadAnimImage("media\spark.bmp", 32, 32, 0, 3)
MaskImage gfxSparks, 255, 0, 255
ClsColor 0, 0, 255 While Not KeyHit(1)
   Cls
   If MilliSecs() > tmrSparks + 100 Then
      tmrSparks = MilliSecs()
      frmSparks = (frmSparks + 1) Mod 3
   End If
   DrawImage gfxSparks, MouseX(), MouseY(), frmSparks
   Flip
Wend


Siehe auch

DrawBlock, DrawBlockRect, DrawImage, DrawImageRect, LoadAnimImage, LoadImage

Übersicht 2D Grafik Bilder