VB .NET - Mesclando e imprimindo imagens
Esta dica é baseada em um artigo encontrado no http://vbcity.com/ e mostrar como mesclar e imprimir imagens em uma aplicação Windows Forms.
Vou usar o Visual Basic 2010 Express Edition para criar o exemplo mostrado nesta dica.
Abra o VB 2010 Express e crie um novo projeto do tipo Windows Forms Application chamado MesclandoImagens;
A seguir defina no formulário padrão form1.vb os seguintes controles:
Conforme o leiaute abaixo:
Primeiro vamos definir o código dos botões Carregar Imagem que permitirá que seja selecionada uma imagem que será exibida no controle PictureBox.
O código dos botões é quase idêntico somente mudando o controle pictureBox que carrega a imagem selecionada;
Para selecionar uma imagem usamos o controle OpenFileDialog permite que o usuário selecione um arquivo para ser aberto pela sua aplicação;
O código dos dois botões pode ser visto a seguir:
Private
Sub
btnCarregarImagem1_Click(ByVal
sender As
System.Object,
ByVal
e As
System.EventArgs)
Handles
btnCarregarImagem1.Click
fdlg.Title = "C"fdlg.InitialDirectory = "c:\"fdlg.Filter = "Imagens (*.*)|*.*|Imagens (*.*)|*.*"fdlg.FilterIndex = 2 fdlg.RestoreDirectory = TrueIf fdlg.ShowDialog() = DialogResult.OK Then picImagem1.Image = New System.Drawing.Bitmap(fdlg.FileName)End If End Sub |
Código para carregar a imagem no primeiro PictureBox - picImagem1 |
Private Sub btnCarregarImagem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCarregarImagem2.Click
Dim fdlg As OpenFileDialog = New OpenFileDialog() fdlg.Title = "C"fdlg.InitialDirectory = "c:\"fdlg.Filter = "Imagens (*.*)|*.*|Imagens (*.*)|*.*"fdlg.FilterIndex = 2 fdlg.RestoreDirectory = TrueIf fdlg.ShowDialog() = DialogResult.OK Then picImagem2.Image = New System.Drawing.Bitmap(fdlg.FileName)End If End Sub |
Código para carregar a imagem no segundo PictureBox - picImagem2 |
O código do botão - Mesclar (btnMesclar) é dado a seguir:
Private
Sub
btnMesclar_Click(ByVal
sender As
System.Object,
ByVal
e As
System.EventArgs)
Handles
btnMesclar.Click picImagem3.Image = mesclarImagens(picImagem1.Image, picImagem2.Image) End Sub |
A rotina mesclarImagem é quem vai realizar a mesclagem das duas imagens e retornar a imagem mesclada. O seu código é dado abaixo:
Public Function mesclarImagens(ByVal Pic1 As Image, ByVal pic2 As Image) As Image Dim ImagemMesclada As Image ' Esta sera a imagem mesclada retornada Dim Wide, High As Integer ' tamanho da imagem mesclada Try ' Calculando a largura(Width) e altura(Height) necessária para compor as imagens ' Largura Wide = Pic1.Width + pic2.Width ' Altura: Verificar se a nova imagem tem altura suficiente para conter as duas imagens High = If(Pic1.Height >= pic2.Height, Pic1.Height, pic2.Height) ' Cria um bitmap vazio Dim bm As New Bitmap(Wide, High) ' Obtem o objeto Graphics para este bitmap Dim gr As Graphics = Graphics.FromImage(bm) ' Desenha a primeira imagem a esquerda da nova imagen gr.DrawImage(Pic1, 0, 0) ' Desenha a segunda imagem a direita gr.DrawImage(pic2, Pic1.Width, 0) ' Atribui a imagem mesclada que acabamos de criar ao controle picturebox ImagemMesclada = bm ' libera o objeto usado gr.Dispose() ' retorna a imagem mesclada Return ImagemMesclada Catch ex As Exception MsgBox("Erro ao mesclar imagem: " & ex.Message) End Try End Function |
Para imprimir a imagem inserimos o código abaixo no evento Click do botão Imprimir:
Private
Sub
btnImprimir_Click(ByVal
sender As
System.Object,
ByVal
e As
System.EventArgs)
Handles
btnImprimir.Click
picImagem3.Width = picImagem3.Image.Width + 2 picImagem3.Height = picImagem3.Image.Height + 2 ' imprime a imagem
PrintDocument1.Print() End Sub |
Precisamos definir o evento PrintPage do controle PrintDocument conforme abaixo:
Private Sub
PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Handles PrintDocument1.PrintPage Dim Rect As New Rectangle(20, 20, picImagem3.Width, picImagem3.Height) e.Graphics.DrawImage(picImagem3.Image, Rect) End Sub |
Executando o projeto e carregando as imagens e clicando no botão Mesclar iremos obter:
Para imprimir basta clicar no botão imprimir.
Simples, simples assim...
Pegue o projeto completo aqui: MesclandoImagens.zip
Eu sei é apenas VB .NET, mas eu gosto...
Referências: