Option Explicit
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Sub GenerateTransForm(ByVal Frm As Form, ByVal Pct As PictureBox, ByVal ColorValue As Long)
Dim lngX As Long, lngY As Long
Dim lngStartX As Long, lngStartY As Long
Dim lngEndX As Long, lngEndY As Long
Dim lngHRectregion As Long, lngTempHRectRegion As Long
Dim lngVoidReturn As Long
Dim blnStatus As Boolean
    Frm.Width = Frm.ScaleX(Pct.Width, vbPixels, vbTwips)
    Frm.Height = Frm.ScaleY(Pct.Height, vbPixels, vbTwips)
    DoEvents
    blnStatus = False
    For lngX = 0 To Pct.ScaleWidth
        blnStatus = False
        For lngY = 0 To Pct.ScaleHeight
            If blnStatus Then
                If Pct.Point(lngX, lngY) = ColorValue Then
                    lngEndX = lngX
                    lngEndY = lngY
                    If lngHRectregion = 0 Then
                        lngHRectregion = CreateRectRgn(lngStartX, lngStartY, lngEndX + 1, lngEndY)
                    Else
                        lngTempHRectRegion = CreateRectRgn(lngStartX, lngStartY, lngEndX + 1, lngEndY)
                        lngVoidReturn = CombineRgn(lngHRectregion, lngHRectregion, lngTempHRectRegion, 2)
                        DeleteObject lngTempHRectRegion
                    End If
                    blnStatus = False
                End If
             Else
                If Pct.Point(lngX, lngY) <> ColorValue Then
                    lngStartX = lngX
                    lngStartY = lngY
                    lngEndX = lngX
                    lngEndY = lngY
                    blnStatus = True
                End If
            End If
        Next
    Next
    lngVoidReturn = SetWindowRgn(Frm.hwnd, lngHRectregion, True)
    lngVoidReturn = DeleteObject(lngHRectregion)
End Sub

    Source: geocities.com/g_h_o_s_t_f_i_s_h