如何使用GDI绘制半透明矩形

来源:互联网 发布:vr 知乎 编辑:程序博客网 时间:2024/05/24 03:22
/*使用GDI绘制半透明矩形*/void CDirectXDraw::DrawHalfOpacityRect(HDC hdc,CRect rect){CDC dc;dc.Attach(hdc);CDC cdc; cdc.CreateCompatibleDC( &dc );CBitmap bitmap, *pOldBitmap;bitmap.CreateCompatibleBitmap( &dc, rect.right, rect.bottom );CRect src( rect );src.OffsetRect( CSize( -rect.left, -rect.top ) );pOldBitmap = cdc.SelectObject( &bitmap );cdc.FillSolidRect( src, RGB( 0, 0, 0 ) ); //透明色if( ::AlphaBlend == 0 ){dc.BitBlt( rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, &cdc, src.left, src.top, SRCINVERT );}else{BLENDFUNCTION bf;    memset( &bf, 0, sizeof( bf ) );bf.SourceConstantAlpha = 0x3f; //透明程度//值越大越不透明bf.BlendOp = AC_SRC_OVER;::AlphaBlend( dc.GetSafeHdc(), rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, cdc.GetSafeHdc( ), src.left, src.top, src.right - src.left, src.bottom - src.top, bf );  }cdc.SelectObject( pOldBitmap );dc.Detach();}

0 0
原创粉丝点击