La Red de Conocimientos Pedagógicos - Currículum vitae - 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 Msimg32.lib debe estar incluido 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 objetivo int hHeightDest, // alto objetivo hdchhdcsrc, // fuente DCint nXOriginSrc, // punto inicial fuente X int nYOriginSrc, // punto inicial fuente Y int nWidthSrc, // ancho fuente int nHeightSrc, // alto 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. Seleccionar objeto (amp Football BMP);

Transparente BLT(pDC-gt; m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218, 199, RGB (0, 0, 0xff)); //RGB(0, 0, 0xff) cambia el color de fondo.

ImagenDC. seleccionar objeto(pOldImageBMP);