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
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:…
buscaba algo parecido, y me ha servido mucho…saludos
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
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
Te recomiendo este artículo: http://www.solovb.net/index.php/2009/03/06/formulario-transparente-opacity/
puede que te oriente… y también te aconsejo que le des una mirada a todos los artículos, pués hay cosas muy interesantes y si te queda cómodo, puedes recomendar el sitio a algún colega. Gracias!
AL INSERTAR EL CODIGO ME MARCA UN ERROR
Error 1 ‘Graphics’ no es un miembro de ‘System.EventArgs’.
wow, justo lo que necesito para mi aplicación veré si logro hacerla vertical
al cambiarlo en sentido vertical me dío risa saber que solo hay que borrar una palabra y poner otra, me sirvió gracias!
Muy buen post, lo descubrí hace unas horas y lo he hecho tanto en VB como en C#, sencillo y conciso. Muy bueno, saludos.