Simple to use, short in code and doesnt take much memory when loading. Set your form to AutoRedraw True, then add this code in the Declarations:

VB Code:
  1. Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
  2. Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
  3.                   Private Type POINTAPI
  4.                          x As Long
  5.                          y As Long
  6.                   End Type

Then add this code:

VB Code:
  1. Public Function gradient(obj As Object, col1, col2)
  2. Dim p As POINTAPI
  3.  
  4.                   oldsc = obj.ScaleMode
  5.                   obj.ScaleMode = 3
  6.                   r = (col1 And &HFF&)
  7.                   g = (col1 And &HFF00&) / &H100&
  8.                   b = (col1 And &HFF0000) / &H10000
  9.  
  10.                   r2 = (col2 And &HFF&)
  11.                   g2 = (col2 And &HFF00&) / &H100&
  12.                   b2 = (col2 And &HFF0000) / &H10000
  13.                   sw = obj.ScaleWidth
  14.                   dr = (r2 - r) / sw
  15.                   dg = (g2 - g) / sw
  16.                   db = (b2 - b) / sw
  17.                   obj.Cls
  18.                   For i = 1 To sw
  19.                   r = r + dr
  20.                   g = g + dg
  21.                   b = b + db
  22.                   y = obj.ScaleHeight
  23.                   obj.ForeColor = RGB(CInt(r), CInt(g), CInt(b))
  24.                   MoveToEx Form1.hdc, i, 0, p
  25.                   LineTo obj.hdc, i, y
  26.  
  27.                   Next i
  28.  
  29.                   obj.ScaleMode = oldsc
  30.                   End Function

And finally add this:

VB Code:
  1. Private Sub Form_Resize()
  2. gradient Form1, Color1, Color2
  3. End Sub

Enjoy;)