如果只是要做到这个效果的话,只要使用这个API就可以了: TranslateBitmapBits 定义: Declare Function TranslateBitmapBits Lib "mscms.dll" (ByRef THTRANSFORM As Long, pvoid As Any, ByVal pBmformat As Struct_MembersOf_BMFORMAT, ByVal dword As Long, ByVal dword As Long, ByVal dword As Long, pvoid As Any, ByVal pBmformat As Struct_MembersOf_BMFORMAT, ByVal dword As Long, ByRef TPBMCALLBACKFN As PBMCALLBACKFN, ByVal lparam As Long) As Long
自己用Aplha算法写就行了,很方法的.这里给一个简易算法.50%透明 r = r1/2 + r2/2 g = g1/2 + g2/2 b = b1/2 + b2/2 50%以下 r = r1 - r1/ALPHA + r2/ALPHA g = g1 - g1/ALPHA + g2/ALPHA b = b1 - b1/ALPHA + b2/ALPHA 50%以上 r = r1/ALPHA + r2 - r2/ALPHA g = g1/ALPHA + g2 - g2/ALPHA b = b1/ALPHA + b2 - b2/ALPHA
如果能像Office中那样录制完宏立刻就能看到代码就好了。
楼主可以在VB中添加photoshop对象的引用后,打开对象浏览器窗口自己研究一番,这几个操作应该不是很难。
TranslateBitmapBits
定义:
Declare Function TranslateBitmapBits Lib "mscms.dll" (ByRef THTRANSFORM As Long, pvoid As Any, ByVal pBmformat As Struct_MembersOf_BMFORMAT, ByVal dword As Long, ByVal dword As Long, ByVal dword As Long, pvoid As Any, ByVal pBmformat As Struct_MembersOf_BMFORMAT, ByVal dword As Long, ByRef TPBMCALLBACKFN As PBMCALLBACKFN, ByVal lparam As Long) As Long
r = r1/2 + r2/2
g = g1/2 + g2/2
b = b1/2 + b2/2
50%以下
r = r1 - r1/ALPHA + r2/ALPHA
g = g1 - g1/ALPHA + g2/ALPHA
b = b1 - b1/ALPHA + b2/ALPHA
50%以上
r = r1/ALPHA + r2 - r2/ALPHA
g = g1/ALPHA + g2 - g2/ALPHA
b = b1/ALPHA + b2 - b2/ALPHA