用GDI双缓冲绘图,我发现如果内存DC创建的是兼容位图, 从内存DC拷贝到设备DC, AlphaBlend会失效;
尝试下将位图输出为DIB, 再将DIB选入内存DC, 依然无效这是为什么呢?再网上找了下, 发现不少人碰到这个问题, 但木有发觉解决方法MFC界面 AlphaBlend透明

解决方案 »

  1.   

    用的AlphaBlend的哪种模式
    如果是AC_SRC_ALPHA 模式,源DC的draw surface必须是32bpp的,这时一般将包含alpha通道的32bpp位图以DIBSection的形式加载(LoadImage LR_CREATEDIBSECTION),将其选入MEMDC,DCDIBSectio保证MEMDC将是32bpp的,而不会因为当前display mode非32位造成在memdc中创建的DDB也不是32bit的,引起AlphaBlend执行返回错误
    另外AC_SRC_ALPHA需要手动Premultiply源像素
      

  2.   


    嗯, 发觉问题了差不多是这样, 我没的函数中打算用AC_SRC_ALPHA模式, 但是设置了这个值