CDC::AlphaBlend
之前要将位图编辑为32位BMP格式,并编辑需要透明的A通道信息

解决方案 »

  1.   

    复杂一点可以遍历像素,将每个像素RGB值后增加一个A通道透明值,再用AlphaBlend输出
      

  2.   

    也就是说只能根据源位图Alpha来设置通道值以作为AlphaBlend的参数,然后用AlphaBlend作用于目标矩形吗?没有更简单的方法吗
      

  3.   

    CDC memdc;
    CBitmap bmp,*pOldBitmap;
    memdc.CreateCompatibleDC(pDC);
    bmp.CreateCompatibleBitmap(pDC,300,200);
    pOldBitmap=memdc.SelectObject(&bmp);
    memdc.FillSolidRect(0,0,300,200,RGB(0,0,255));
    BLENDFUNCTION bf;
    bf.BlendOp=AC_SRC_OVER;
    bf.BlendFlags=0;
    bf.SourceConstantAlpha=0x7f;
    bf.AlphaFormat=0;
    pDC->AlphaBlend(0,0,300,200,&memdc,0,0,300,200,bf);
    memdc.SelectObject(pOldBitmap);
      

  4.   

    AlphaBlend
    用GDI实现起来相当麻烦。代码就一长串,我搞过。
    有GDI+干嘛不用TransparentBlt,设置一种颜色透明,什么问题都搞定了
      

  5.   

    现在才知道有TransparentBlt这个函数,不过好像也是GDI的,不管了,用了再说