2010-04-28 13 views
8

Quiero implementar un sistema de capas en mi aplicación y estaba pensando en crear un montón de mapas de bits transparentes, agregarles contenido y luego superponerlos uno encima del otro, ¿cómo puede hacerse esto sin configurar cada píxel (0,0 , 0,0). Estoy usando Pure win32, no MFC, gracias.Creando un mapa de bits transparente con GDI?

Respuesta

10

¿Qué quieres decir con transparente?

Si está buscando una transparencia parcial (a total), entonces AlphaBlend es la API de GDI que debe usar. La carga de mapas de bits con alfa es complicada: el único formato compatible con la API base de Windows para cargar mapas de bits con alfa es un archivo .BMP de 32bp con un canal alfa en los 8 bits superiores de cada byte, y los bytes inferiores deben multiplicarse previamente.

Es posible usar GDI + para cargar una variedad de formatos de imagen con alfa - PNG es probablemente lo mejor, y blitter en una DIBSection de 32bpp para que pueda usar las funciones GBI AlphaBlend y simple.

Si desea una máscara de transparencia simple en lugar de un canal alfa completo, puede usar TransparentBlt junto con una clave de color para enmascarar las áreas de un mapa de bits al hacer blitting.

-1

GDI no es compatible con la transparencia en mapas de bits y en general. Considere usar GDI+.

+0

Lo sortof hace - tiene soporte para la mezcla transparente de un mapa de bits en otro, utilizando componentes alfa en el mapa de bits a través de AlphaBlend. También existen algunas extensiones para admitir Aero en las ventanas que también podrían contar. Aunque tienes razón sobre el caso general. –

+0

También hay TransparentBlt, pero cuando se utilizan imágenes de 32 bits (por ejemplo, aquellas con transparencia especificada), AlphaBlend es el camino a seguir. – dlanod

Cuestiones relacionadas