实现GDI透明的关键是
1、需要把内容画到一个临时位图上,同时保护好alpha通道。...2、在于把临时位图的数据和原位图做混合,而且不能改变镂空部分原位图的alpha通道,比如被DrawText修改过的镂空部分
步骤:
1.创建临时位图,临时DC,临时DC加载临时位图
2.对临时DC设置相关属性...需要做反锯齿处理,反锯齿处理的关键也是和背景色做混合,因此从原位图复制出数据).
4.把临时位图的alpha全置为1(GDI函数只会将那些变色的点的alpha通道清0,所以alpha清0的像素点就是需要保留的像素点...)
5.绘制相关内容到临时DC.
6.依据3和4,GDI函数处理后未变化的alpha都是1,变化的alpha都为0,将所有的alpha减1,则未变化的alpha都是0,变化的alpha都为0xff((byte...)-1).
7.用AlphaBlend做混合,对于那些需要镂空的点,由于临时位图的alpha为0,混合后根据AlphaBlend的公式,即不会改变原来的RGB值,也不会改变原来的alpha值。