⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transparent.c

📁 VC++编程宝典,电子工业出版社出版,源代码,第一部分
💻 C
字号:
void DrawTransparent( int x, int y, CDC *pDC, CBitmap *pBitmap, COLORREF Color )
{
	BITMAP bm;
	pBitmap->GetObject( sizeof( BITMAP ), &bm );

	CDC ImageDC;
	ImageDC.CreateCompatibleDC( pDC );
	CBitmap *pOldImageBitmap = ImageDC.SelectObject( pBitmap );

	CDC MaskDC;
	MaskDC.CreateCompatibleDC( pDC );

	CBitmap MaskBitmap;
	MaskBitmap.CreateBitmap( bm.bmWidth, bm.bmHeight, 1, 1, NULL );
	CBitmap *pOldMaskBitmap = MaskDC.SelectObject( &MaskBitmap );

	ImageDC.SetBkColor( Color );
	MaskDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &ImageDC, 0, 0, SRCCOPY );

	CDC OrDC;
	OrDC.CreateCompatibleDC( pDC );

	CBitmap OrBitmap;
	OrBitmap.CreateCompatibleBitmap( &ImageDC, bm.bmWidth, bm.bmHeight );
	CBitmap *pOldOrBitmap = OrDC.SelectObject( &OrBitmap );

	OrDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &ImageDC, 0, 0, SRCCOPY );
	OrDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &MaskDC, 0, 0, 0x220326 );

	CDC TempDC;
	TempDC.CreateCompatibleDC( pDC );

	CBitmap TempBitmap;
	TempBitmap.CreateCompatibleBitmap( &ImageDC, bm.bmWidth, bm.bmHeight );
	CBitmap *pOldTempBitmap = TempDC.SelectObject( &TempBitmap );

	TempDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, pDC, x, y, SRCCOPY );
	TempDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &MaskDC, 0, 0, SRCAND );
	TempDC.BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &OrDC, 0, 0, SRCPAINT );

	pDC->BitBlt( x, y, bm.bmWidth, bm.bmHeight, &TempDC, 0, 0, SRCCOPY );

	TempDC.SelectObject( pOldTempBitmap );
	OrDC.SelectObject( pOldOrBitmap );
	MaskDC.SelectObject( pOldMaskBitmap );
	ImageDC.SelectObject( pOldImageBitmap );

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -