码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-10-07 22:10:17      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:otto   clip   sel   top   fun   get   pat   ati   href   

[cpp] view plain copy
 
  1. /*使用GDI绘制半透明矩形*/  
  2. void CDirectXDraw::DrawHalfOpacityRect(HDC hdc,CRect rect)  
  3. {  
  4.     CDC dc;  
  5.     dc.Attach(hdc);  
  6.   
  7.     CDC cdc;   
  8.     cdc.CreateCompatibleDC( &dc );  
  9.   
  10.     CBitmap bitmap, *pOldBitmap;  
  11.     bitmap.CreateCompatibleBitmap( &dc, rect.right, rect.bottom );  
  12.     CRect src( rect );  
  13.     src.OffsetRect( CSize( -rect.left, -rect.top ) );  
  14.     pOldBitmap = cdc.SelectObject( &bitmap );  
  15.     cdc.FillSolidRect( src, RGB( 0, 0, 0 ) ); //透明色  
  16.   
  17.     if( ::AlphaBlend == 0 )  
  18.     {  
  19.         dc.BitBlt( rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, &cdc, src.left, src.top, SRCINVERT );  
  20.   
  21.     }else{  
  22.   
  23.         BLENDFUNCTION bf;      
  24.         memset( &bf, 0, sizeof( bf ) );  
  25.         bf.SourceConstantAlpha = 0x3f; //透明程度//值越大越不透明  
  26.         bf.BlendOp = AC_SRC_OVER;  
  27.   
  28.         ::AlphaBlend( dc.GetSafeHdc(), rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,   
  29.             cdc.GetSafeHdc( ), src.left, src.top, src.right - src.left, src.bottom - src.top, bf );    
  30.     }  
  31.   
  32.     cdc.SelectObject( pOldBitmap );  
  33.   
  34.     dc.Detach();  
  35. }  

http://blog.csdn.net/lee353086/article/details/38311421

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

标签:otto   clip   sel   top   fun   get   pat   ati   href   

原文地址:http://www.cnblogs.com/findumars/p/7635869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!