Panel con colores en degrade – (Gradient)

Quiero mostrarles en esta oportunidad una forma muy sencilla de tener un panel mucho más vistoso con un degradé de dos colores en visual basic .net.

Para el ejemplo necesitamos un formulario y un panel, tal como se muestra en la siguiente figura:

luego damos doble clic sobre el panel y nos vamos al evento paint del panel en la vista de código, y en este evento colocamos el siguiente código:

Dim y As Integer = 0
Dim x As Integer = 0
Dim ancho As Integer = Me.Width
Dim alto As Integer = Me.Height
Dim color1 As Color
Dim color2 As Color

color1 = Color.DarkRed
color2 = Color.LightCoral

Dim colorear As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y), _
color1, color2)
e.Graphics.FillRectangle(colorear, _
x, y, ancho, alto)
y += alto + 10

Para que este código funcione deberemos agregar una referencia a Drawing2D como se muestra a continuación:

Imports System.Drawing.Drawing2D

Al ejecutar el programa deberíamos ver un formulario con un aspecto similar al de la siguiente figura:

Cambiando los valores de las variables color1 y color2 pueden cambiar los resultados a su gusto.

También quiero dejarles a continuación un par de variantes para reemplaar el código del evento paint del panel y obtener distintos resultados… espero que los prueben y les agrade…

Variante 1

Dim y As Integer = 0
Dim x As Integer = 0
Dim ancho As Integer = Me.Width
Dim alto As Integer = Me.Height
Dim color1 As Color
Dim color2 As Color

color1 = Color.DarkRed
color2 = Color.LightCoral

Dim black_white_brush As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y), _
color1, color2)

Dim color_blend As New ColorBlend(3)
color_blend.Colors = New Color() {color1, color2, color1}
color_blend.Positions = New Single() {0.0, 0.2, 1.0}
black_white_brush.InterpolationColors = color_blend
e.Graphics.FillRectangle(black_white_brush, _
x, y, ancho, alto)

Variante 2

Dim y As Integer = 0
Dim x As Integer = 0
Dim ancho As Integer = Me.Width
Dim alto As Integer = Me.Height
Dim color1 As Color
Dim color2 As Color

color1 = Color.DarkRed
color2 = Color.LightCoral

Dim colorear As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y), _
color1, color2)

Dim diag_brush As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y + alto), _
color1, color2)
e.Graphics.FillRectangle(diag_brush, _
x, y, ancho, alto)

Si te sirvieron, por favor, deja un comentario. Saludos



9 Responses to “Panel con colores en degrade – (Gradient)”

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Quiero mostrarles en esta oportunidad una forma muy sencilla de tener un panel mucho más vistoso con un degradé de dos colores. Para el ejemplo necesitamos un formulario y un panel, tal como se muestra en la siguiente figura:…

  2. hamilton dice:

    buscaba algo parecido, y me ha servido mucho…saludos

  3. Carlos Claudio dice:

    Hola a Todos
    Gracias por el codigo, soy un estudiante de informatica y me sirvio de mucho este codigo, ya que siempre es bueno que nuestros forms tengan una buena apariencia, asi que ya no tendre que estar buscando alguna imagen de fondo.
    gracias totales

    Carlos Claudio

  4. Jb dice:

    Q buen code, pude acoplarlo a una clase q me hiciera de fondo el degradado… Gracias, sería posible q alguien supiera como hacerlo visible/invisible paulatinemente??

    Gracias de nuevo

  5. ADAL dice:

    AL INSERTAR EL CODIGO ME MARCA UN ERROR

    Error 1 ‘Graphics’ no es un miembro de ‘System.EventArgs’.

  6. poncianux dice:

    wow, justo lo que necesito para mi aplicación veré si logro hacerla vertical

  7. poncianux dice:

    al cambiarlo en sentido vertical me dío risa saber que solo hay que borrar una palabra y poner otra, me sirvió gracias!

  8. Cristyan dice:

    Muy buen post, lo descubrí hace unas horas y lo he hecho tanto en VB como en C#, sencillo y conciso. Muy bueno, saludos.

Comentar