Version 2.0!
Features
Tutorials
Files
Glossary
Projects
Contact
Links
Message Board
Extras
LuckyCam
Old News
Sign Guestbook
View Guestbook
VB Horoscope
VB Photo Album
.
ATTENTION READERS! Lucky's VB Gaming Site is no longer active. For updated game programming information and tutorials, please visit The Game Programming Wiki!

Transparenz

Wenn Du ein Bitmap darstellst, wirst Du meistens wollen, daß ein Teil davon transparent erscheint. Wie sonst sollte man Jupiter sehen, wenn man mit seinem Veganischen Raumisch darüber hinwegdüst? Ohne Transparenz würde es aussehen wie ein Rechteck mit einem Raumschiff darin, das über Jupiter fliegt. Du mußt eine bestimmte Farbe als transparent deklarieren, um das schwarze Rechteck verschwinden zu lassen, so daß nur das Raumschiff übrigbleibt. Ich neige dazu, schwarz zu nehmen, also werden wir das hier tun (Anm. des Übersetzters: normalerweise nimmt man selten benutzte Farben wie leuchtend grün oder rosa).

Dim CKey As DDCOLOR

    CKey.low = vbBlack
    CKey.high = vbblack
    Sprite.SetColorKey DDCKEY_SRCBLT, CKey

"CKey" wird als DirectDraw Color Key (= Schlüssel) definiert. Es enthält einen 'low' (= niedrig) und einen 'high' (= hoch) Wert. Dadurch können wir einen Frabbereich als transparent definieren (wenn wir wollen). Für unsere Zwecke reicht eine Farbe: schwarz. Wir setzen sowohl 'CKey.low' als auch 'CKey.high' auf vbBlack. Nun müssen wir nur noch die 'Sprite.SetColorKey' Methode unter Benutzung des erstellten Color Keys anwenden. Der Flag 'DDCKEY_SRCBLT' zeigt an, daß wir diesen Color Key auf das Quellbitmap anwenden wollen, wenn wir es Blt'en. Das wird im Folgenden erklärt:

    BackBuffer.Blt DestRect, Sprite, SrcRect, DDBLT_KEYSRC Or DDBLT_WAIT

Wenn wir jetzt die Oberfläche Blt'en, müssen wir den 'DDBLT_KEYSRC' Flag setzen, um sicherzustellen, daß der Color Key der Quelle (hier der 'Sprite' Oberfläche) als transparent erkannt wird. Und das war's auch schon.

Schau Dir auch mein DirectX 7 Beispielprojekt an, um den Effekt in Aktion zu sehen (in Englisch).

Übersetzung:Konrad Rudolph