VB.Net Dibujar con degradado con Drawin2D

Vamos a ver como podemos darle bonitos colores a nuestros controles a través de la librería Drawin2D

En este ejemplo vamos a hacerlo con un Panel, aunque se puede utilizar con cualquier contenedor que tenga el evento Paint y se pueda poner transparente.

El resultado sería como este:



Bueno vamos al lió!


Lo primero insertamos en el formulario el Panel, y le ponemos en la propiedad BackColor en Transparente (que está en la pestaña Web)

Ahora nos vamos al código e importamos la librería:

Imports System.Drawing.Drawing2D


Ahora nos vamos al evento Paint del panel. Y ponemos esto:

Dim Brocha As LinearGradientBrush
Dim Superficie As Graphics
Dim Rectangulo As Rectangle
Dim Lapiz As Pen

Try

'Aquí igualamos la variable superficie a los argumentos del panel
Superficie = e.Graphics
'Aquí seleccionaremos el color del borde (yo lo he puesto azul oscuro)
Lapiz = New Pen(Color.Navy, 1)

'Le damos el tamaño al rectángulo, cero a la altura y cero a la izquierda y
'el tamaño usamos las propiedades del Panel

Rectangulo = New Rectangle(0, 0, Panel1.Width, Panel1.Height)
'Aquí elegimos los colores del degradado y la forma del degradado
'Aquí esta puesto ForwardDiagonal, es decir, de esquina superior a la esquina inferior
'juega con esa propiedad para ver sus efectos
Brocha = New System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.White, Color.Navy, LinearGradientMode.ForwardDiagonal)

'Aquí pintamos el cuadrado y luego el borde
Superficie.FillRectangle(Brocha, Rectangulo)
Superficie.DrawRectangle(Lapiz, Rectangulo)

'Lo liberamos de la memoria
Lapiz.Dispose()
Superficie.Dispose()
Catch ex As Exception
'No hacemos nada si falla. Si hay error
End Try




Y listo ya tendríamos nuestro panel decorado!!


Tambien, puedes añadir, por ejemplo, un label al Panel y en el mismo paint del Panel añadir que te pinte el Label de otro color, pasandole las propiedades del label

Rectangulo = New Rectangle(Label1.Left, Label1.Top, Label1.Width, Label1.Height)
Brocha = New System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.Yellow, Color.LimeGreen, LinearGradientMode.ForwardDiagonal)
Superficie.FillRectangle(Brocha, Rectangulo)
Superficie.DrawRectangle(Lapiz, Rectangulo)

Quedaría así:






You liked this post? Subscribe via RSS feed and get daily updates.

4 comentarios:

  1. excelente aporte!!!
    gracias

  2. Muy buen ejemplo.

    Gracias !!!!!!

  3. al querer correr la aplicacion me marca el siuiente error un error

    'Graphics' no es un miembro de 'System.EventArgs'.

  4. Señor/a Anonimo: ¿En que evento lo estás poniendo? Tiene que ser en el Paint!!!!

Publicar un comentario en la entrada