VB .NET - Convertendo Texto para Imagem (para novatos)


  Neste artigo vou mostrar como converter texto para imagem usando o namespace Graphics.

Usar os recursos do GDI+ é a maneira de desenhar formas, fontes, imagens ou geralmente qualquer coisa gráfica no Visual Basic .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.

Mas o objeto Graphics é também uma das primeiras fontes de confusão ao usar GDI +. O objeto Graphics está sempre associado a um contexto de dispositivo particular.

Assim, o primeiro problema que praticamente cada novo aluno do GDI+ confronta é: "Como faço para obter um objeto Graphics ?"

Existem basicamente duas formas :

Além do objeto Graphics você usará também com muita frequência os objetos : Colors, Pen e Fonts:

Neste artigo eu vou mostrar como criar uma imagem a partir de um texto em tempo de execução e exibir a imagem em um controle PictureBox e salvar a imagem no arquivo de sistemas local.

Recursos Usados

Abra o VS 2015 Community clique em New Project;

Selecione Visual Basic -> Windows Forms Application;

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

Abaixo vemos o formulário principal do programa:

A seguir vamos incluir no formulário padrão os seguintes controles:

No início o formulário vamos definir as variáveis que serão visíveis em todo o projeto com seus valores padrão:

Dim FontNome As String = "Segoe UI"
Dim FontTamanho As Integer = 12
Dim FontCor As Color = Color.Black
Dim CorFundo As Color = Color.White
Dim largura As Integer = 200
Dim altura As Integer = 30

No evento Load do formulário vamos definir os valores padrão para a seleção das comboboxes:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cboLargura.SelectedIndex = 10
        cboAltura.SelectedIndex = 2
End Sub

Agora vamos definir o código em cada evento Click dos botões de comando.

1- Botão Fonte - Define a fonte e o tamanho da fonte a ser usado

Private Sub btnFonte_Click(sender As Object, e As EventArgs) Handles btnFonte.Click
        Dim dlg As New FontDialog
        If dlg.ShowDialog = DialogResult.OK Then
            btnFonte.Font = dlg.Font
            FontNome = dlg.Font.Name
            FontTamanho = dlg.Font.Size
        End If
    End Sub

Usamos aqui a classe FontDialog que exibe uma caixa de diálogo para selecionar a fonte , estilo e tamanho.

2- Botão Definir Cor da Fonte - Define a cor da fonte a ser usada para escrever a imagem

   Private Sub btnCorFonte_Click(sender As Object, e As EventArgs) Handles btnCorFonte.Click
        Dim dlg As New ColorDialog
        If dlg.ShowDialog() = DialogResult.OK Then
            FontCor = dlg.Color
            btnCorFonte.BackColor = dlg.Color
        End If
   End Sub

3- Botão Definir Cor de Fundo - Define a cor de fundo para a imagem

 Private Sub btnCorFundo_Click(sender As Object, e As EventArgs) Handles btnCorFundo.Click
        Dim dlg As New ColorDialog
        If dlg.ShowDialog() = DialogResult.OK Then
            CorFundo = dlg.Color
            btnCorFundo.BackColor = dlg.Color
        End If
    End Sub

4- Botão Gerar Imagem

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

        Try
            largura = Convert.ToInt32(cboLargura.Text)
            altura = Convert.ToInt32(cboAltura.Text)
            'cria um bitmap usando a largura e altura definidas
            Dim objBitmap As New Bitmap(largura, altura)
            'cria um objeto Graphics usando o bitmap 
            Dim objGraphics As Graphics = Graphics.FromImage(objBitmap)

            ' cria os objetos Color , Font e PointF
            Dim objColor As Color = Nothing
            Dim objFont As New Font(FontNome, FontTamanho)
            ' define onde o texto será exibido na área da imagem
            Dim objPoint As New PointF(5.0F, 5.0F)
     
             ' cria dois objetos SolidBrush
            Dim objBrushForeColor As New SolidBrush(FontCor)
            Dim objBrushBackColor As New SolidBrush(CorFundo)
            'Cria um retãngulo usando o objeto Graphics 
            objGraphics.FillRectangle(objBrushBackColor, 0, 0, 500, 500)
            'Desenha o texto no retângulo usando o objeto Graphics
             objGraphics.DrawString(txtTexto.Text, objFont, objBrushForeColor, objPoint)
             'salva e exibe a imagem gerada
            objBitmap.Save(txtNomeArquivo.Text & ".JPG", ImageFormat.Jpeg)
            picImagem.Image = objBitmap
            'MessageBox.Show("Imagem criada com sucesso.")
        Catch ex As Exception
            MessageBox.Show("Erro : " & ex.Message)
        End Try
    End Sub

 

5- Botão Encerrar - Sai da aplicação

Private Sub btnSair_Click(sender As Object, e As EventArgs) Handles btnSair.Click
        Application.Exit()
End Sub

Executando o projeto e selecionando alguns valores teremos o seguinte resultado :

Esse é um projeto bem básico para os novatos que estão iniciando o aprendizado na linguagem VB .NET.

Pegue o projeto completo aqui :   VBNET_Texto_Imagem.zip

E esta é a mensagem que dele ouvimos, e vos anunciamos: que Deus é luz, e não há nele trevas nenhumas.
Se dissermos que temos comunhão com ele, e andarmos em trevas, mentimos, e não praticamos a verdade

1 João 1:5,6

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