Estructura BLENDFUNCTION (wingdi.h)

La estructura BLENDFUNCTION controla la fusión especificando las funciones de fusión para mapas de bits de origen y destino.

Sintaxis

typedef struct _BLENDFUNCTION {
  BYTE BlendOp;
  BYTE BlendFlags;
  BYTE SourceConstantAlpha;
  BYTE AlphaFormat;
} BLENDFUNCTION, *PBLENDFUNCTION;

Miembros

BlendOp

Operación de combinación de origen. Actualmente, la única operación de combinación de origen y destino que se ha definido es AC_SRC_OVER. Para obtener más información, consulte la siguiente sección Comentarios.

BlendFlags

Debe ser cero.

SourceConstantAlpha

Especifica un valor de transparencia alfa que se usará en todo el mapa de bits de origen. El valor SourceConstantAlpha se combina con cualquier valor alfa por píxel en el mapa de bits de origen. Si establece SourceConstantAlpha en 0, se supone que la imagen es transparente. Establezca el valor SourceConstantAlpha en 255 (opaco) cuando solo desee usar valores alfa por píxel.

AlphaFormat

Este miembro controla la forma en que se interpretan los mapas de bits de origen y destino. AlphaFormat tiene el siguiente valor.

Value Significado
AC_SRC_ALPHA Esta marca se establece cuando el mapa de bits tiene un canal Alfa (es decir, alfa por píxel). Tenga en cuenta que las API usan alfa premultiplicado, lo que significa que los valores de canal rojo, verde y azul del mapa de bits se deben premultiplicar con el valor del canal alfa. Por ejemplo, si el valor del canal alfa es x, los canales rojo, verde y azul deben multiplicarse por x y dividirse por 0xff antes de la llamada.

Comentarios

Cuando el miembro AlphaFormat es AC_SRC_ALPHA, el mapa de bits de origen debe ser 32 bpp. Si no es así, se producirá un error en la función AlphaBlend .

Cuando el miembro BlendOp es AC_SRC_OVER, el mapa de bits de origen se coloca sobre el mapa de bits de destino en función de los valores alfa de los píxeles de origen.

Si el mapa de bits de origen no tiene ningún valor alfa por píxel (es decir, no se establece AC_SRC_ALPHA), el valor SourceConstantAlpha determina la combinación de los mapas de bits de origen y destino, como se muestra en la tabla siguiente. Tenga en cuenta que se usa SCA para SourceConstantAlpha aquí. Además, SCA se divide entre 255 porque tiene un valor que oscila entre 0 y 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 el mapa de bits de destino tiene un canal alfa, la mezcla es la siguiente.

Dst.Alpha = Src.Alpha * (SCA/255.0) + Dst.Alpha * (1.0 - (SCA/255.0))
 

Si el mapa de bits de origen no usa SourceConstantAlpha (es decir, es igual a 0xFF), el alfa por píxel determina la combinación de los mapas de bits de origen y destino, como se muestra en la tabla siguiente.

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 el mapa de bits de destino tiene un canal alfa, la mezcla es la siguiente.

Dest.alpha = Src.Alpha + (1 - SrcAlpha) * Dst.Alpha
 

Si el origen tiene tanto SourceConstantAlpha (es decir, no es 0xFF) como alfa por píxel, el origen se multiplica previamente por SourceConstantAlpha y, a continuación, la mezcla se basa en el alfa por píxel. En las tablas siguientes se muestra esto. Tenga en cuenta que SourceConstantAlpha se divide en 255 porque tiene un valor que oscila entre 0 y 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

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado wingdi.h (incluye Windows.h)

Consulte también

AlphaBlend

Estructuras de mapa de bits

Información general sobre mapas de bits