i have this code for transparency, but it seems to run a little slow. here it is:

Code:
Private Sub TransBack(ByVal xstart As Long, ByVal ystart As Long, ByVal xend As Long, ByVal yend As Long, ByVal bgcolor As Long, ByVal thdc As Long, ByVal thWnd As Long)
    
    'declare region variables
    Dim rgn2 As Long, rgn3 As Long, rgn4 As Long
    
    'declare substitute variables for the function parameters
    Dim Top As Long, Left As Long, Right As Long, Bottom As Long, temptop As Long
    
    'create some region buffers
    rgn = CreateRectRgn(0, 0, 0, 0)
    rgn2 = CreateRectRgn(0, 0, 0, 0)
    rgn3 = CreateRectRgn(0, 0, 0, 0)
    
    'this loop picks out the transparent colors,
    'there MUST be three loops or Windows has a hard
    'time handling the complex regions
 
    Left = xstart
    Right = (xend - xstart) + 1: Bottom = (yend - ystart) + 1
    
    Do While Left < Right  'go through and scan left to right
        Top = ystart
        Do While Top < Bottom  'go through and scan top to botom
            If GetPixel(thdc, Left, Top) <> bgcolor Then
                temptop = Top
                Do While GetPixel(thdc, Left, Top + 1) <> bgcolor
                    Top = Top + 1
                    If Top = Bottom Then Exit Do
                Loop
                rgn4 = CreateRectRgn(Left, temptop, Left + 1, Top + 1)
                CombineRgn rgn3, rgn2, rgn2, 5
                CombineRgn rgn2, rgn4, rgn3, 2
                DeleteObject rgn4
            End If
            Top = Top + 1
        Loop
        CombineRgn rgn3, rgn, rgn, 5
        CombineRgn rgn, rgn2, rgn3, 2
        DoEvents
        Left = Left + 1
    Loop
  
    DeleteObject rgn2
    SetWindowRgn thWnd, rgn, True
    
End Sub
does anyone know a better code to use for transparency? hopefully a faster, more optimized one? any help will be accepted with great appreciation.

--michael