Проверьте эту отличную страницу .Код в статье находится на C #.Вот порт vb.net кода, который вам интересен и обновлен для прямоугольной заливки: (на основе образца треугольной заливки статьи.)
Dim pgb As New PathGradientBrush(New Point() { _
New Point(0, 0), _
New Point(0, Me.ClientRectangle.Height), _
New Point(Me.ClientRectangle.Width, Me.ClientRectangle.Height), _
New Point(Me.ClientRectangle.Width, 0)})
pgb.SurroundColors = New Color() {Color.Red}
pgb.CenterColor = Color.Gray
e.Graphics.FillRectangle(pgb, Me.ClientRectangle)
pgb.Dispose()
Вот еще одно возможное решение:
Dim pth As New GraphicsPath()
pth.AddEllipse(Me.ClientRectangle)
Dim pgb As New PathGradientBrush(pth)
pgb.SurroundColors = New Color() {Color.Red}
pgb.CenterColor = Color.Gray
e.Graphics.FillRectangle(pgb, Me.ClientRectangle)
Обратите внимание, что этот последний фрагмент кода нарисует круг, ограниченный внутри прямоугольника.Если вы хотите, чтобы круговой градиент заполнил весь прямоугольник, вам придется рассчитать больший эллиптический путь с большим прямоугольником.