IMAGES TRANSPARENTES - LES COLORKEYS

Dans cet article, nous couvrirons les bases de l'utilisation des ColorKeys pour rendre certaines parties de vos images transparentes.

Vous pouvez télécharger le projet exemple de cet article: Code Source Du Projet : ddColorKeys.zip

Notion de Couleur Clé - ColorKeys

Définir une couleur clé dans une image consiste à définir une couleur transparente dans l'image.

On utilise les colorkeys pour qu'il y ait harmonie entre l'arrière plan et l'image à coller sur ce-dernier.
Exemple:

Sans ColorKeys Avec ColorKeys: On rend le blanc transparent.
ck1.gif (1166 octets) ck2.gif (1028 octets)

Passons au code.

Création d'une couleur clé.

D'abord il faut déclarer un objet DDCOLORKEY

Dim ck as DDCOLORKEY

Ensuite on définit la couleur clé (transparente) dans l'image.

ck.high = RGB(256, 256, 256)
ck.low = RGB(256, 256, 256)

La couleur blanche est la couleur clé.

Application sur la surface

Il faut maintenant appliquer la couleur clé sur la surface. On utilise pour cela la méthode SetColorKey.

Set Surface = DD.CreateSurfaceFromFile(App.Path + "\image.bmp", ddsd)
Surface.SetColorKey DDCKEY_SRCBLT, ck

Mais ce n'est pas tout, lorsqu'on voudra faire un blit de la surface vers une autre, il faudra ajouter un flag supplémentaire à l'argument flag du blit
Pour BltFast, il faut ajouter DDBLTFAST_SRCCOLORKEY. Exemple:

'ColorKeys: DDBLTFAST_SRCCOLORKEY
Backbuffer.BltFast 0, 0, Surface, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY

C'est tout !

Conclusion

Bien vous venez de découvrir comment manipuler les ColorKeys afin de définir une couleur transparente dans une image.
Mais vous pouvez sophistiquer cet exemple en rendant plusieur couleurs transparentes à la fois.
Il suffira par exemple, si nous voulons rendre le bleu et le rouge transparent dans une image, de faire ceci:
Charger l'image dans Surface1, rendre le bleu transparent et mettre le résultat dans Surface2, ensuite rendre le rouge contenu dans Surface2 transparent et mettre le résultat dans Surface1.
Il est bien vrai que les bitmaps sont souvent un peu lourds, c'est pourquoi la plus part des programmeurs préfèrent utiliser les images gif ou jpg, Mais DirectX ne dispose d'aucune fonction permettant de le faire: Nous verrons comment charger un gif/jpg dans le prochain article.

Téléchargement

Vous pouvez télécharger le projet exemple de cet article:

Ce projet utilise les ColorKeys pour rendre le blanc d'une image transparent.

[Home] lienie.gif (941 octets)[Actualités]  [Trucs & Astuces] [Astuces Windows] [ActiveX-Ocx/Dll] [Articles] [Codes Sources] [VB Games] [Fichiers Sons] [Fichiers Icônes] [Programmes & Sources]  mailing.gif (910 octets)[Mailing-List] smiley.gif (359 octets)[Divers] about.gif (920 octets)[A Propos]