zoukankan      html  css  js  c++  java
  • 如何使用GDI绘制半透明矩形

    [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

  • 相关阅读:
    【个人博客设计】
    复杂多边形光栅化算法
    xmake 描述语法和作用域详解
    协程分析之context上下文切换
    tbox协程使用之切换与等待
    记boost协程切换bug发现和分析
    跨平台自动构建工具v1.0.2 发布
    xmake从入门到精通9:交叉编译详解
    xmake从入门到精通9:交叉编译详解
    跨平台c开发库tbox:内存库使用详解
  • 原文地址:https://www.cnblogs.com/findumars/p/7635869.html
Copyright © 2011-2022 走看看