逐点算,计算透明后的颜色透明度计算函数 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
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
http://www.applevb.com/art/halftran.txt
用AlphaBlend叠加:
http://www.applevb.com/art/alphablend.txt
人总是要成长的,让我们大家一起在CSDN里成长为新一代的高手吧!
想吵架的人闪一边去,我们只来学习,不学习的请安静!!!