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:
System.Drawing - Este é o principal namespace GDI+, ele define objetos para a renderização base(fontes, canetas, escovas básicas, etc.) e o objeto mais importante: Graphics;
System.Drawing.Drawing2D - Permite usar objetos para gráficos bidimensionais vetoriais. Alguns deles são escovas de inclinação, canetas e transformações geométricas;
System.Drawing.Imaging - Usado para mudar imagens gráficas - ou seja, alterar a paleta, o metadados do extrato de imagem, manipular metafiles, e assim por diante;
System.Drawing.Printing - Usado para renderizar imagens para a página da impressão, interagir com a própria impressora, e formatar a aparência geral de um trabalho de impressã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
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: