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!

Transparency

Most of the time when you display a bitmap, you'd like the have some part of it appear transparent. How else are you going to be able to see Jupiter when you fly your Vegan starship over it? It would look like a rectangle with a ship in it flying over Jupiter without transparency effects. What you need to do is set a certain colour to be the transparent colour, thus removing the unsightly black rectangle, and leaving only the colourful ship behind. I tend to use black, so that's what we'll do here.

Dim CKey As DDCOLORKEY

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

"CKey" is defined as a DirectDraw Color Key. The "CKey" contains a "low" value and a "high" value. This enables us to define a range of colours as transparent (if we want). For our purposes a single colour will do fine: Black. We set "CKey.low" and "CKey.high" to vbBlack. All we have to do after that is set the "Sprite.SetColorKey" method using the color key we've created. Also the flag "DDCKEY_SRCBLT" indicates that we want to apply this key to the source bitmap when we blt it. This will make more sense in a second:

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

Now when we blt the surface we have to specify the "DDBLT_KEYSRC" flag to ensure that the color key of the source (the "Sprite" surface) is considered transparent during the blt. That's all there is to it!

Have a look at my DirectX 7 sample project to see it in action.