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).
"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).