i build 1 sub for do the transparent opacy.
and i belive that i have some errors on it, because i have bad results
maybe is my converstion or how i combine the colors i don't have sure. can anyone tell me how combine the colors for opacy, then maybe i can fix the sub. the R,G or B are more than 255 and i know that isn't a correct result(i recive overflow error on RGB function)Code:'Opacy an image(alpha blend): finalrgb = a*rgb1 + (1-a)rgb2 Public Sub TransparentAlphaBlend(ByRef SrcHDC As Long, ByRef DstHDC As Long, ByRef SrcWidth As Long, SrcHeight, ByRef Opacy As Integer, ByRef TransparentColor As Long) Dim x As Long, y As Long Dim lngsrcColor As Long Dim lngdstColor As Long Dim lngNewColor As Long Dim dblAlphaDst As Long Dim dblAlpha As Double, R As Long, G As Long, B As Long Dim SrcRed As Long, SrcBlue As Long, SrcGreen As Long Dim DstRed As Long, DstBlue As Long, DstGreen As Long 'convert between 0-100 to 255 dblAlpha = Opacy * 255 / 100 dblAlphaDst = dblAlpha - 1 For x = 0 To SrcWidth - 1 For y = 0 To SrcHeight - 1 lngdstColor = GetPixel(DstHDC, x, y) lngsrcColor = GetPixel(SrcHDC, x, y) If lngsrcColor <> TransparentColor Then DstRed = lngdstColor And 255 DstGreen = (lngdstColor And 65535) \ 256 DstBlue = (lngdstColor And &HFF0000) \ 65536 SrcRed = lngsrcColor And 255 SrcGreen = (lngsrcColor And 65535) \ 256 SrcBlue = (lngsrcColor And &HFF0000) \ 65536 R = (dblAlpha * SrcRed) + dblAlphaDst * DstRed G = (dblAlpha * SrcGreen) + dblAlphaDst * DstGreen B = (dblAlpha * SrcBlue) + dblAlphaDst * DstBlue lngNewColor = RGB(R, G, B) SetPixelV DstHDC, x, y, lngNewColor End If Next y Next x End Sub
can anyone advice me?






Reply With Quote