STRUCTURE BLENDFUNCTION (wingdi.h)
La structure BLENDFUNCTION contrôle la fusion en spécifiant les fonctions de fusion pour les bitmaps sources et de destination.
Syntaxe
typedef struct _BLENDFUNCTION {
BYTE BlendOp;
BYTE BlendFlags;
BYTE SourceConstantAlpha;
BYTE AlphaFormat;
} BLENDFUNCTION, *PBLENDFUNCTION;
Membres
BlendOp
Opération de fusion source. Actuellement, la seule opération de fusion source et de destination qui a été définie est AC_SRC_OVER. Pour plus d’informations, consultez la section Remarques suivante.
BlendFlags
Doit être zéro.
SourceConstantAlpha
Spécifie une valeur de transparence alpha à utiliser sur l’ensemble de la bitmap source. La valeur SourceConstantAlpha est combinée avec toutes les valeurs alpha par pixel dans la bitmap source. Si vous définissez SourceConstantAlpha sur 0, il est supposé que votre image est transparente. Définissez la valeur SourceConstantAlpha sur 255 (opaque) lorsque vous souhaitez utiliser uniquement des valeurs alpha par pixel.
AlphaFormat
Ce membre contrôle la façon dont les bitmaps sources et de destination sont interprétées. AlphaFormat a la valeur suivante.
Valeur | Signification |
---|---|
AC_SRC_ALPHA | Cet indicateur est défini lorsque la bitmap a un canal Alpha (c’est-à-dire, par pixel alpha). Notez que les API utilisent l’alpha prémultiplié, ce qui signifie que les valeurs de canal rouge, vert et bleu de la bitmap doivent être prémultipliées avec la valeur du canal alpha. Par exemple, si la valeur du canal alpha est x, les canaux rouge, vert et bleu doivent être multipliés par x et divisés par 0xff avant l’appel. |
Remarques
Lorsque le membre AlphaFormat est AC_SRC_ALPHA, la bitmap source doit être de 32 bpp. Si ce n’est pas le cas, la fonction AlphaBlend échoue.
Lorsque le membre BlendOp est AC_SRC_OVER, la bitmap source est placée sur l’image bitmap de destination en fonction des valeurs alpha des pixels sources.
Si la bitmap source n’a aucune valeur alpha par pixel (autrement dit, AC_SRC_ALPHA n’est pas définie), la valeur SourceConstantAlpha détermine le mélange des bitmaps source et de destination, comme indiqué dans le tableau suivant. Notez que SCA est utilisé pour SourceConstantAlpha ici. En outre, le SCA est divisé par 255, car il a une valeur comprise entre 0 et 255.
Dst.Red | = Src.Red * (SCA/255.0) | + Dst.Red * (1.0 - (SCA/255.0)) |
Dst.Green | = Src.Green * (SCA/255.0) | + Dst.Green * (1.0 - (SCA/255.0)) |
Dst.Blue | = Src.Blue * (SCA/255.0) | + Dst.Blue * (1.0 - (SCA/255.0)) |
Si la bitmap de destination a un canal alpha, le mélange est le suivant.
Dst.Alpha | = Src.Alpha * (SCA/255.0) | + Dst.Alpha * (1.0 - (SCA/255.0)) |
Si la bitmap source n’utilise pas SourceConstantAlpha (autrement dit, elle est égale à 0xFF), l’alpha par pixel détermine le mélange des bitmaps source et de destination, comme indiqué dans le tableau suivant.
Dst.Red | = Src.Red | + (1 - Src.Alpha) * Dst.Red |
Dst.Green | = Src.Green | + (1 - Src.Alpha) * Dst.Green |
Dst.Blue | = Src.Blue | + (1 - Src.Alpha) * Dst.Blue |
Si la bitmap de destination a un canal alpha, le mélange est le suivant.
Dest.alpha | = Src.Alpha | + (1 - SrcAlpha) * Dst.Alpha |
Si la source a à la fois l’alpha SourceConstantAlpha (autrement dit, elle n’est pas 0xFF) et l’alpha par pixel, la source est pré-multipliée par sourceConstantAlpha , puis le mélange est basé sur l’alpha par pixel. Les tableaux suivants le montrent. Notez que SourceConstantAlpha est divisé par 255, car sa valeur est comprise entre 0 et 255.
Src.Red | = Src.Red | * SourceConstantAlpha / 255.0 ; |
Src.Green | = Src.Green | * SourceConstantAlpha / 255.0 ; |
Src.Blue | = Src.Blue | * SourceConstantAlpha / 255.0 ; |
Src.Alpha | = Src.Alpha | * SourceConstantAlpha / 255.0 ; |
Dst.Red | = Src.Red | + (1 - Src.Alpha) * Dst.Red |
Dst.Green | = Src.Green | + (1 - Src.Alpha) * Dst.Green |
Dst.Blue | = Src.Blue | + (1 - Src.Alpha) * Dst.Blue |
Dst.Alpha | = Src.Alpha | + (1 - Src.Alpha) * Dst.Alpha |
Configuration requise
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | wingdi.h (inclure Windows.h) |