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:

José Carlos Macoratti