VB .NET - Aplicando um gradiente de cores em um formulário
Este artigo tem como objetivo mostrar como você pode aplicar uma cor ao fundo de um formulário Windows Forms com efeito de gradação.
Abaixo temos figuras que ilustram algumas das possibilidades que podemos criar:
Para aplicar este efeito é muito simples...
No evento do Load do formulário defina o seguinte código:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'otimiza a rotina de gradiente SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True) End Sub |
A seguir sobrescreva o evento OnPaint do formulário conforme o código abaixo:
' Sobrescreva o evento OnPaint do formulário Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) ' Declare uma variável do tipo Graphics chamada formGraphics. ' Atribua o endereço (Refereência) a deste objeto a variável FromGraphics Dim formGraphics As Graphics = e.Graphics ' Declare uma variável do tipo LinearGradientBrush chamada gradientBrush. ' Use o construtor LinearGradientBrush para criar um novo objeto LinearGradientBrush ' Atribua o endereço do novo objeto a variável gradientBrush Dim gradientBrush As New LinearGradientBrush(New Point(0, 0), New Point(Width, 0), Color.White, Color.LightSalmon) ' A seguir mais exemplos que criam gradientes diferentes ' comente a linha com a instrução Dim acima e descomente uma das linhas abaixo 'Dim gradientBrush As New LinearGradientBrush(New Point(0, 0), New Point(Width, 0), Color.Chartreuse, Color.SteelBlue) 'Dim gradientBrush As New LinearGradientBrush(New Point(0, 0), New Point(Width, 0), Color.White, Color.SteelBlue) formGraphics.FillRectangle(gradientBrush, ClientRectangle) End Sub |
Um outra possibilidade é usar somente o evento Paint do formulário colocando o código a seguir:
Obs: Ao usar o evento Paint o código de OnPaint deve ser comentado.
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 'Cria um novo retangulo com lagura e altura similar na base do formulário Dim oRAngle As Rectangle = New Rectangle(0, 0, Me.Width, Me.Height) 'Cria um novo gradiente estilo brush. 'altera as cores para boter diferentes combinações Dim oGradientBrush As Brush = New Drawing.Drawing2D.LinearGradientBrush(oRAngle, Color.BlueViolet, Color.BurlyWood, Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal) 'Com a ajuda da função fillrectangle desenha o retangulo no formulário e.Graphics.FillRectangle(oGradientBrush, oRAngle) End Sub |
O resultado do código acima é visto na figura a seguir:
Simples , simples assim...
Pegue o projeto completo aqui: GradienteCores.zip
Eu sei é apenas VB .NET, mas eu gosto...
Referências: