CLE DE COULEUR
Dans le but de pouvoir afficher des objets graphiques
(sprites), il va falloir definir une couleur transparente.
Cette couleur n'est pas ecrite dans le buffer de destination ce qui permet de
creer cette transparence
EN COURS DE CONSTRUCTION
Type | Description | Valeur |
DDPIXELFORMAT | Objet permettant d'obtenir le format de pixels |
dwRGBBitCount: Nombre de bit par pixel dwRBitMask: Masque de bits pour les bits rouge dwGBitMask Masque de bits pour les bits vert: dwBBitMask: Masque de bits pour les bits bleu dwAlphaBitDepth: Masque de bits pour les bits alpha |
DDCOLORKEY | Objet de type cle couleur | dwColorSpaceLowValue: Valeur minimum de la cle couleur dwColorSpaceHighValue: Valeur maximum de la cle couleur |
Dans le code de Boulder ca donne ceci :
DDPIXELFORMAT ddpf;
DDCOLORKEY Cle;
ddpf.dwSize=sizeof(ddpf); //initialisation
de ddpf
BackBuffer->GetPixelFormat(&ddpf); //Demande le
format de pixel du BackBuffer
//Fixe la couleur transparente
//Couleur verte 255 par saturation
KeyColor=ddpf.dwGBitMask;
//Fixe la valeur minimum et maximum de la
couleur
//Dans cet exemple la couleur n'a pas de tolerance, elle equivaut au vert a
255
Cle.dwColorSpaceHighValue=KeyColor;
Cle.dwColorSpaceLowValue=KeyColor;
//Fixe la cle sur les differents ecrans
FondEcran->SetColorKey(DDCKEY_SRCBLT, &Cle);
Image->SetColorKey(DDCKEY_SRCBLT, &Cle);
Sprite->SetColorKey(DDCKEY_SRCBLT, &Cle);
BackBuffer->SetColorKey(DDCKEY_SRCBLT, &Cle)
//exemple de code pour transferer des zones source rctd vers une Image dans une zone de destination rcts
BackBuffer->Blt(&rctd,Image,&rcts,DDBLT_WAIT|DDBLT_KEYSRC ,NULL);
//si vous voulez afficher le contenu du
BackBuffer il faut utiliser le code suivant
//FondEcran->Flip(0,DDFLIP_WAIT);
L'obtention de la valeur de la couleur se fait comme suit:
Color=(((DWORD)(dwRBitMask*0.25)) & dwRBitMask)+(((DWORD)(dwGBitMask*0.25)) & dwGBitMask)+(((DWORD)(dwBBitMask*0.25)) & dwBBitMask);
Pour une valeur RVB de (255,255,0) les facteurs de multiplications seraient
(1.0,1.0,0).
Pour une valeur RVB de (0,0,255) les facteurs de multiplications seraient
(0,0,1.0)
La valeur maximum exprimée par 255 a un facteur de multiplication de 1.