Otros de los artículos GDI+ que tuve el gusto de escribir para el www.ElGuille.info es acerca del manejo de gradientes y brochas en Visual Basic .NET, aquí dejo un parte de dicho artículo, si deseas echarles ojo a todo el artículo aquí te dejo el link.
LinearGradientBrush Rellena un objeto Brush con un degradado lineal. Esta brocha rellena un rectángulo con dos colores y transición graduada de uno a otro. La brocha está definida por un rectángulo, dos colores y una orientación de la graduación. La orientación de la graduación está incluida en la enumeración LinearGradientMode. Esta clase encapsula degradados de dos colores y degradados personalizados de varios colores.

Todos los degradados lineales se definen a lo largo de una línea especificada por el ancho de un rectángulo o por dos puntos. De manera predeterminada, un degradado lineal de dos colores es una mezcla lineal horizontal equilibrada desde el color inicial hasta el final a lo largo de la línea especificada. Personalice el patrón de mezcla con la clase Blend o los métodos SetSigmaBellShape y SetBlendTriangularShape. Personalice la dirección del degradado especificando la enumeración LinearGradientMode o el ángulo del constructor. Use la propiedad InterpolationColors para crear un degradado de varios colores. La propiedad Transform especifica una transformación geométrica local aplicada al degradado. eyyyy !!! no corrás, todo lo mencionado anteriormente se ejemplicará, pues tu amigo Percy Reyes está para ayudarte. Sigamos... con un ejemplo...

' punto inicial del degradado
Dim myStartPointGradient As PointF = New PointF(10, 10)
' punto final del degradado
Dim myEndPointGradient As PointF = New PointF(100, 10)
' primer color del degradado
Dim StarColorGradient As Color = Color.Brown
' segundo color del degradado
Dim EndColorGradient As Color = Color.Yellow
' creamos la brocha degradada
Dim myLinearGradientBrush As LinearGradientBrush = New LinearGradientBrush( _
myStartPointGradient, myEndPointGradient, StarColorGradient, EndColorGradient)
' pintamos el rectángulo haciendo uso de la brocha myLinearGradientBrush
Dim myRectangleToPaint As Rectangle = New Rectangle(New Point(10, 10), New Size(400, 400))
Me.TextBox1.CreateGraphics.FillRectangle(myLinearGradientBrush, myRectangleToPaint)

Esta es otra forma de crear la anterior brocha degradada
' creamos la brocha degradada
Dim myLinearGradientBrush As LinearGradientBrush = New LinearGradientBrush( _
New Rectangle(New Point(10, 10), New Size(100, 10)), Color.Brown, Color.Yellow, LinearGradientMode.Horizontal)
' pintamos el rectángulo haciendo uso de la brocha myLinearGradientBrush
Me.TextBox1.CreateGraphics.FillRectangle(myLinearGradientBrush, New Rectangle(New Point(10, 10), New Size(400, 400)))
NOTA En cada uno de los ejemplos no se olvide de liberar recursos usados por la brocha y por el graphics.
' cerramos la brocha liberando recursos
myLinearGradientBrush.Dispose()
' cerramos el graphics
Me.TextBox1.CreateGraphics.Dispose()
Como había comentado en alguna parte de este artículo, podemos personalizar nuestras gradientes, mediante la clase ColorBlend, añadiendo más colores y estableciendo puntos de inicio a partir de donde empezará el pintado (en ambas vertientes) para cada color. La clase Belnd define matrices de colores y posiciones utilizadas para intercalar mezclas de color en un degradado de color.
Un objeto ColorBlend contiene las matrices correspondientes de colores y posiciones. Las posiciones son valores del 0 al 1 que especifican el porcentaje de la distancia a lo largo de la línea del degradado del punto donde está ubicado el color correspondiente. Si se establece esta propiedad se crea un degradado de varios colores con un color en cada posición a lo largo de la línea de degradado. Si se establece esta propiedad se anulan todos los valores anteriores de color, posición y disminución de este objeto LinearGradientBrush. Estoy seguro que con un ejemplo su vida le será menos complicada, je, je, je...
Ejemplo:
' creamos la brocha
Dim myLinearGradientBrush As LinearGradientBrush = New LinearGradientBrush( _
New Rectangle(New Point(100, 100), New Size(400, 100)), Color.Brown, Color.Yellow, LinearGradientMode.Horizontal)
' definimos los colores para la gradiente
Dim MezclaColores As ColorBlend = New ColorBlend
MezclaColores.Colors = New Color() {Color.Green, Color.Yellow, Color.White, Color.Red, Color.Brown, Color.Orange}
' ahora hacemos lo mismo con los puntos de inicio para los colores
Dim PuntosInicioPintado As Single() = New Single() {0.0F, 0.1F, 0.2F, 0.4F, 0.7F, 1.0F}
' establecemos las posiciones a lo largo de la línea de un degradado
MezclaColores.Positions = PuntosInicioPintado
'establecemos un objeto ColorBlend que define un degradado lineal de varios colores
myLinearGradientBrush.InterpolationColors = MezclaColores
' finalmente hacemos que myLinearGradientBrush haga su trabajo
Me.TextBox1.CreateGraphics.FillRectangle(myLinearGradientBrush, New Rectangle(New Point(100, 100), New Size(400, 100)))
' cerramos la brocha
myLinearGradientBrush.Dispose()
' cerramos el graphics
Me.TextBox1.CreateGraphics.Dispose()
Esto es lo que se obtuvo:

PathGradientBrush Rellena la forma con colores que emanan desde el centro y los vértices de la forma y van graduando El degradado de color es un sombreado suave de colores desde el punto central del trazado hasta el límite del borde exterior del trazado. Los factores de mezcla, las posiciones y el estilo afectan a los puntos inicial y final del degradado y a la rapidez del cambio de sombreado. Los pinceles de trazado del degradado no obedecen a la propiedad SmoothingMode del objeto Graphics utilizado para realizar el dibujo. Las áreas que se rellenan mediante un objeto PathGradientBrush se procesan de la misma manera (sin alisado), independientemente del modo de suavizado.

' creamos un GraphicsPath que almacenará las líneas y curvas
Dim myGraphicsPath As New GraphicsPath
' le agregamos un rectángulo
myGraphicsPath.AddRectangle(New Rectangle(New Point(100, 100), New Size(200, 200)))
' creamos la brocha, dándole como parámetro myGraphicsPath de donde extraerá el punto central
Dim myBrocha As PathGradientBrush = New PathGradientBrush(myGraphicsPath)
' le asignamos el color central
myBrocha.CenterColor = Color.White
' especificamos los colores para la gradiente
myBrocha.SurroundColors = New Color() {Color.Yellow, Color.Green, Color.Orange, Color.YellowGreen}
' finalmente hacemos que la brocha haga su trabajo
Me.TextBox1.CreateGraphics.FillPath(myBrocha, myGraphicsPath)

También podemos hacerlo creando un array de puntos y opcionalmente definiendo el punto central.

' creando el array de puntos
Dim Puntos() As PointF = New PointF() {New PointF(100, 100), _
New PointF(300, 100), New PointF(300, 300), New PointF(100, 300)}
' creamos la brocha, dándole como parámetro el array de puntos
Dim myBrocha As PathGradientBrush = New PathGradientBrush(Puntos )
' opcionalmente asigno el punto central, esta vez moveré el punto central...
myBrocha.CenterPoint = New PointF(150, 150)
' le asignamos el color central
myBrocha.CenterColor = Color.White
' especificamos los colores para la gradiente
myBrocha.SurroundColors = New Color() {Color.Yellow, Color.Green, Color.Orange, Color.YellowGreen}
' finalmente hacemos que la brocha haga su trabajo
Me .TextBox1.CreateGraphics.FillPolygon (myBrocha, Puntos)
Algo importante a saber es que así como podíamos personalizar la gradiente usando LinearGradientBrush, de manera semejante podemos hacerlo para PathGradientBrush. Ejemplo:
' creamos un GraphicsPath que almacenará las líneas y curvas
Dim myGraphicsPath As New GraphicsPath
' le agregamos un rectángulo
myGraphicsPath.AddRectangle(New Rectangle(New Point(100, 100), New Size(400, 300)))
' creamos la brocha, dándole como parámetro myGraphicsPath de donde extraerá el punto central
Dim myBrocha As PathGradientBrush = New PathGradientBrush(myGraphicsPath)
' definimos los colores para la gradiente
Dim Colores() As Color = New Color() _
{Color.Green, Color.GreenYellow, Color.Green, Color.YellowGreen, Color.Green, Color.GreenYellow}
' ahora hacemos lo mismo con los puntos de inicio para los colores
Dim Puntos() As Single = New Single() {0.0F, 0.2F, 0.4F, 0.6F, 0.8F, 1.0F}
' estableciendo últimos detalles...
Dim MezclaColores As New ColorBlend(5)
MezclaColores.Colors = Colores
MezclaColores.Positions = Puntos
myBrocha.InterpolationColors = MezclaColores
' dibujamos
Me.TextBox1.CreateGraphics.FillPath(myBrocha, myGraphicsPath)
Un artículo más ha sido terminado y espero que haya logrado el objetivo de ayudarte y ser de utilidad para todos. Bueno, parece que terminé sano y salvo esta vez,... aún queda muchos más artículos por escribir acerca de GDI+... no te la pierdas...!!!