VB .NET - Criando imagens via código (Windows Forms) - I

Neste artigo vou mostrar como podemos criar imagens via código usando a linguagem VB .NET em uma aplicação Windows Forms.

Gráficos e imagens são um forma muito usada para representar dados em um formato estruturado e existem diversas formas de gerar gráficos e tabelas na plataforma .NET.

A plataforma .NET oferece o controle .NET Chart Control para criar gráficos de diversos formatos e eu já publiquei diversos artigos sobre o assunto.

Além disso podemos também criar gráficos e tabelas em tempo de execução usando as classes disponíveis no namespace System.Drawing.

Como cada gráfico ou tabela/imagem é exibido como uma imagem, assim, precisamos saber como criar imagens usando a plataforma .NET. Uma forma de fazer isso é usar as classes BitMap e Graphics que também estão presentes no namespace System.Drawing.

A classe Graphics encapsula o GDI+ e permite desenhar em uma superfície: formulário, controle, etc., usando seus principais métodos e propriedades. Usar os recursos do GDI+ é a maneira de desenhar formas, fontes, imagens ou geralmente qualquer coisa gráfica na plataforma .NET.

Os namespaces em GDI + são:

O lugar para começar com GDI + é o objeto Graphics. Embora as coisas que você desenha apareçam em seu monitor ou em uma impressora, o objeto Graphics é a "tela" onde você desenha.

Vou começar criando uma imagem em tempo de execução em um projeto Windows Forms.

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução e o projeto Windows Forms

Abra o VS Community 2015 e clique em New Project;

Vamos criar uma solução e dois projetos : um projeto Windows Forms e um projeto ASP .NET Web Forms (na segunda parte do artigo)

Selecione Other Project Types e clique em Visual Studio Solution;

Selecione Blank Solution e informe o nome Gerando_GraficosTabelas e clique em OK;

Depois clique no menu File -> Add Project;

Selecione a Visual Basic -> Windows Forms Application;

Informe o nome Projeto_WF e clique no botão OK;

No formulário padrão form1.vb inclua os seguintes controles:

Disponha os controles conforme o leiaute da figura abaixo:

A seguir defina o seguinte namespace no projeto:

Imports System.IO

Declare as seguintes variáveis no formulário:

'Define as variáveis para cor de fundo, do texto e a fonte
Dim CorFundo As Color = Color.Aqua
Dim CorTexto As Color = Color.Black
Dim Fonte As Font = New Font("Arial", 16, FontStyle.Bold, FontStyle
.Italic)

No evento Click do botão de comando - Gerar Imagem - inclua o código a seguir:

Private Sub btnGerarImagem_Click(sender As Object, e As EventArgs) Handles btnGerarImagem.Click
        GerarImagem()
End Sub

O código do método GerarImagem() é visto a seguir:

Private Sub GerarImagem()
        Try
            'Define a Altura(Height) e Largura(Width) da imagem
            Dim width As Integer = Convert.ToInt32(txtLargura.Text)
            Dim height As Integer = Convert.ToInt32(txtAltura.Text)
            'Cria uma instância do objeto Bitmap  de um tamanho especificado
            Dim objBitmap = New Bitmap(width, height)
            Dim objGraphics = Graphics.FromImage(objBitmap)
            'Define a cor da borda
            objGraphics.FillRectangle(New SolidBrush(Color.Black), 0, 0, width, height)
            'define a Cor de Fundo
            objGraphics.FillRectangle(New SolidBrush(CorFundo), 2, 2, width - 4, height - 4)
            'Cria um objeto de StringFormat de define os alinhamentos
            Dim strFormat = New StringFormat()
            strFormat.Alignment = StringAlignment.Center
            strFormat.LineAlignment = StringAlignment.Center
            'Desenha o texto na imagem
            objGraphics.DrawString(txtTexto.Text, Fonte, New SolidBrush(CorTexto), New Rectangle(0, 0, width, height), strFormat)
            If Not File.Exists(txtLocalNomeImagem.Text) Then
                'Salva a imagem 
                objBitmap.Save(txtLocalNomeImagem.Text)
            Else
                MessageBox.Show("A imagem já existe. Informe outro nome ou local.")
                Return
            End If
             'exibe a imagem no controle picturebox
            picImagem.Image = Image.FromFile(txtLocalNomeImagem.Text)
            'Não esqueça de liberar os recursos
            objGraphics.Dispose()
            objBitmap.Dispose()
        Catch ex As Exception
            MessageBox.Show("Erro : " + ex.Message)
        End Try
    End Sub

O código já esta comentado mas basicamente cria uma imagem usando os dados fornecidos pelo usuário.

A seguir defina o código que trata da definição da cor do fundo, da cor do texto e da fonte usada no projeto:

 Private Sub btnCorFundo_Click(sender As Object, e As EventArgs) Handles btnCorFundo.Click
        Dim dlgCorFundo As New ColorDialog
        If dlgCorFundo.ShowDialog = Windows.Forms.DialogResult.OK Then
            btnCorFundo.BackColor = dlgCorFundo.Color
            CorFundo = dlgCorFundo.Color
        End If
    End Sub
    Private Sub btnCorTexto_Click(sender As Object, e As EventArgs) Handles btnCorTexto.Click
        Dim dlgCorTexto As New ColorDialog
        If dlgCorTexto.ShowDialog = Windows.Forms.DialogResult.OK Then
            btnCorTexto.BackColor = dlgCorTexto.Color
            CorTexto = dlgCorTexto.Color
        End If
    End Sub
    Private Sub btnFonte_Click(sender As Object, e As EventArgs) Handles btnFonte.Click
        Dim dlgFonte As New FontDialog
        If dlgFonte.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
            btnFonte.Font = dlgFonte.Font
            Fonte = dlgFonte.Font
        End If
    End Sub

No código acima estamos usando as caixas de diálogo ColorDialog para permitir ao usuário selecionar uma cor e uma caixa de diálogo FontDialog para escolher a fonte.

Executando o projeto iremos obter:

Na próxima parte do artigo veremos como fazer a mesma coisa em uma aplicação ASP .NET Web Forms.

Pegue o projeto completo aqui :  Gerando_GraficosTabelas.zip (sem referências)

"Aquele que diz: Eu conheço-o (a Jesus), e não guarda os seus mandamentos, é mentiroso, e nele não está a verdade."
1 João 2:4

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti