VB .NET - Exibindo imagens de uma pasta em miniaturas e com Zoom.
Hoje vou mostrar como acessar um diretório e exibir todos os seus arquivos do tipo imagem como miniaturas e também com Zoom para uma imagem selecionada. |
Exibir figuras em um controle Image é simples, e, o VB.NET oferece alguns recursos interessantes.
O controle Image possui diversos métodos e propriedades que podemos usar para tratar imagens.
O método GetThumbnailImage() retorna uma miniatura para a imagem.
Se Image contiver uma imagem em miniatura, esse método recupera a miniatura e o seu tamanho para o tamanho solicitado. Se o controle Image não contiver uma imagem em miniatura, este método cria uma imagem em miniatura para dimensionar a imagem principal.
O método de GetThumbnailImage funciona bem quando a imagem em miniatura solicitada tem um tamanho de até 120x120 pixels. Se você usar o método para imagens maiores (por exemplo, 300 x 300) poderá haver uma perda de qualidade visível na imagem em miniatura. Pode ser melhor dimensionar a imagem principal (em vez de dimensionar a miniatura) chamando o método de DrawImage que desenha a imagem do controle Image no local especificado e com o tamanho original.
Recursos usados:
Criando um visualizador de imagens com Zoom
Abra o Visual Studio 2013 Express Edition for windows desktop e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application;
Informe o nome VBNET_Imagens ou outro nome de sua preferência e clique OK.
A seguir inclua a partir da ToolBox os seguintes controles no formulário form1.vb:
Disponha os controles no formulário conforme a figura abaixo:
No menu PROJECT clique em Add Windows Forms e aceite o nome padrão Form2.vb e clique em OK.
A seguir inclua a partir da ToolBox os seguintes controles no formulário form2.vb:
Disponha os controles no formulário conforme a figura abaixo:
No evento SelectedIndexChanged do controle Combobox - cboCaminho - defina o código abaixo:
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboCaminho.SelectedIndexChanged
ExibirImagensNaPasta()
End Sub
|
A rotina ExibirImagensNaPasta() possui o seguinte código:
Sub ExibirImagensNaPasta()
Dim arquivo As String
Dim FI As FileInfo
Dim PBox As PictureBox, img As Image
Dim Left As Integer = 10
Dim Top As Integer = 10
Dim larguraImagem As Integer = 64
Me.Invalidate()
Try
For Each arquivo In Directory.GetFiles(cboCaminho.Text)
FI = New FileInfo(arquivo)
If FI.Extension = ".GIF" Or FI.Extension = ".JPG" Or FI.Extension = ".jpg" Or _
FI.Extension = ".gif" Or FI.Extension = "tiff" Or FI.Extension = "TIFF" Then
PBox = New PictureBox()
PBox.SizeMode = PictureBoxSizeMode.Zoom
img = Image.FromFile(FI.FullName)
PBox.Image = img.GetThumbnailImage(larguraImagem, larguraImagem, Nothing, Nothing)
If Left + larguraImagem > Me.pnlImagensMiniaturas.Width Then
Left = 10
Top += larguraImagem + 10
End If
PBox.Left = Left
PBox.Top = Top
PBox.Width = larguraImagem
PBox.Height = larguraImagem
PBox.Visible = True
PBox.Tag = FI.FullName
Me.Controls.Item("pnlImagensMiniaturas").Controls.Add(PBox)
AddHandler PBox.Click, New System.EventHandler(AddressOf AbrirImagem)
Left = Left + 74
Application.DoEvents()
End If
lbNomeArquivos.Items.Add(FI.Name)
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
Os controles
PictureBox com as miniaturas não são adicionados diretamente no formulário;
em vez disso, eles são adicionados a um controle Panel com sua propriedade
AutoScroll definida como True, de modo que
os usuários podem rolar as imagens de forma independente dos outros controles no
formulário.
O código passa por cada arquivo na pasta selecionada e examina a sua extensão.
Se for JPG, GIF ou TIFF (você pode adicionar mais extensões de arquivo
se você quiser), ele cria um novo controle PictureBox, define seu tamanho e
localização, carrega a miniatura da imagem, e em seguida, adiciona na coleção
Controls do controle Painel.
O Caminho de cada imagem é armazenada na propriedade Tag do controle
PictureBox, e é recuperado posteriormente para
carregar a imagem no segundo formulário - Form2.vb, onde pode ser visualizado.
Observe que o código adiciona um manipulador para o evento Click de cada
controle PictureBox.
Todos os controles PictureBox compartilham um
manipulador comum para o seu evento Click, a sub-rotina AbrirImagem().
Esta sub-rotina lê o caminho da imagem selecionada a partir da propriedade Tag
do controle que disparou o evento Click e exibe a imagem correspondente no
formulário Form2.
O código da rotina AbrirImagem() é exibida a seguir:
Sub AbrirImagem(ByVal sender As Object, ByVal e As System.EventArgs)
Try
Dim imgForm As New Form2()
imgForm.picImagemZOOM.Image = Image.FromFile(sender.tag)
imgForm.Show()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
No evento Click do controle Image no formulário Form2, temos o código que fecha o formulário :
Private Sub picImagemZOOM_Click(sender As Object, e As EventArgs) Handles picImagemZOOM.Click
Me.Close()
End Sub
|
A opção Limpar do menu a limpa todos os controles do formulário e possui o código abaixo:
Private Sub LimparToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LimparToolStripMenuItem.Click
Dim ctrl As Integer
pnlImagensMiniaturas.Controls.Clear()
For ctrl = Me.pnlImagensMiniaturas.Controls.Count - 1 To 0 Step -1
Me.pnlImagensMiniaturas.Controls.Remove(Me.Controls(ctrl))
Next
lbNomeArquivos.Items.Clear()
cboCaminho.Text = ""
End Sub
|
Executando o projeto e selecionando uma pasta no controle combobox teremos a exibição dos nomes dos arquivos e das imagens:
Clicando em uma imagem teremos a sua visualização no segundo formulário:
Pegue o projeto
completo aqui :
VBNET_Imagens.zip
João 4:23 Mas a hora vem, e agora é, em que os verdadeiros adoradores adorarão o Pai em espírito e em verdade; porque o Pai procura a tais que assim o adorem.
João 4:24 Deus é Espírito, e é necessário que os que o adoram o adorem em espírito e em verdade.
Até o próximo artigo...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#