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í:
4 comentarios:
excelente aporte!!!
gracias
Muy buen ejemplo.
Gracias !!!!!!
al querer correr la aplicacion me marca el siuiente error un error
'Graphics' no es un miembro de 'System.EventArgs'.
Señor/a Anonimo: ¿En que evento lo estás poniendo? Tiene que ser en el Paint!!!!
Publicar un comentario