使用API函数AlphaBlend就可以解决了

解决方案 »

  1.   

    逐点算,计算透明后的颜色透明度计算函数
    Public Function TMC(TMD As Single, UpC As Long, DnC As Long) As Long
    'TMD:透明度。0:完全透明;1:不透明。
    'UpC:上层色
    'DownC:下层色
        Dim UpR As Long, UpG As Long, UpB As Long
        Dim DnR As Long, DnG As Long, DnB As Long
        Dim OutR As Long, OutG As Long, OutB As Long
        
        UpR = UpC And &HFF
        UpG = (UpC And &HFF00&) \ &H100
        UpB = (UpC And &HFF0000) \ &H10000
        DnR = DnC And &HFF
        DnG = (DnC And &HFF00&) \ &H100
        DnB = (DnC And &HFF0000) \ &H10000
        
        OutR = DnR + CLng((UpR - DnR) * TMD)
        If OutR < 0 Then OutR = 0
        If OutR > 255 Then OutR = 255
        OutG = DnG + CLng((UpG - DnG) * TMD)
        If OutG < 0 Then OutG = 0
        If OutG > 255 Then OutG = 255
        OutB = DnB + CLng((UpB - DnB) * TMD)
        If OutB < 0 Then OutB = 0
        If OutB > 255 Then OutB = 255
        TMC = RGB(OutR, OutG, OutB) ' OutR + OutG * &H100& + OutB * &H10000
        
    End Function如果要求速度
    要使用DIB
    一个例子:http://www.21code.com/codebase/?pos=down&id=1754
      

  2.   

    用API叠加两个DC,可设置透明度:
    http://www.applevb.com/art/halftran.txt
    用AlphaBlend叠加:
    http://www.applevb.com/art/alphablend.txt
      

  3.   

    UP这方面,我确实还没入门
    人总是要成长的,让我们大家一起在CSDN里成长为新一代的高手吧!
    想吵架的人闪一边去,我们只来学习,不学习的请安静!!!