Red de conocimiento informático - Aprendizaje de programación - Cómo mostrar un par en MFC para que su fondo sea transparente

Cómo mostrar un par en MFC para que su fondo sea transparente

Hay muchas formas de dibujar mapas de bits que contengan colores transparentes. La forma más sencilla es llamar a una función ya preparada: TransparentBlt, o puede implementar una función similar a TransparentBlt a través de su propio código. Hay dos formas de lograr esto: una es preparar el mapa de bits de la máscara con anticipación y la otra es generar dinámicamente el mapa de bits de la máscara. Este artículo presentará el método de generar dinámicamente mapas de bits de máscara para dibujar mapas de bits con áreas transparentes.

Primero, use la función TransparentBlt

La función TransparentBlt se ejecuta en Windows 98/Windows 2000 o superior y necesita incluir Msimg32.lib en el sistema. Puede vincularlo a Msimg32.lib. al usarlo.

TransparentBlt en Windows98 provocará pérdida de recursos, por lo que no se recomienda utilizar esta función en WIN98.

El prototipo de la función TransparentBlt es el siguiente:

Booltransparent BLT (hdchhdcdest, //objetivo DCint nXOriginDest, // objetivo X offset int nYOriginDest, // objetivo Y offset int nWidthDest, / / ancho de destino int hHeightDest, // alto de destino hdchhdcsrc, // fuente DCint nXOriginSrc, // punto de partida de fuente X int nYOriginSrc, // punto de partida de fuente Y int nWidthSrc, // ancho de fuente int nHeightSrc, // altura de fuente UINT Cr transparente // color transparente, tipo COLORREF); Ejemplo de uso:

CBitmap FootballBMP

Fútbol BMP. cargar mapa de bits(IDB _ fútbol BMP);

CDC ImageDC

ImageDC. CreateCompatibleDC(pDC);

CBitmap *pOldImageBMP = ImageDC. Seleccione Objeto(&footballBMP);

Transparente BLT(pDC->m_hDC,0,0,218,199,ImageDC.m_hDC,0,0,218,199,RGB(0, 0, 0x ff)); , 0, 0x ff)) para cambiar el color de fondo.

ImagenDC. seleccionar objeto(pOldImageBMP);