VB.NET - Criando um exibidor de slides
Vamos criar neste artigo um exibidor de slide (slide show) usando os recursos do VB.NET.
Inicie um novo projeto no VS.NET do tipo Windows Application usando a linguagem VB.NET. Altere o nome do formulário padrão para frmPrincipal e inclua no formulário um controle PictureBox com o nome de - picImagem - ; um ListBox - lstImagem - ; OpenFileDialog usando o nome padrão ; 4 controles Button ; um controle TextBox com nome de - txtImagem e um controle LinkLabel , conforme a figura abaixo: (Estou usando também dois controles GroupBox)
Agora vamos incluir o código ao evento de cada controle do formulário:
A primeira coisa a fazer é usar um imports para a classe Threading :
Imports
System.threadingObs: Para saber mais sobre Threads leia os artigos :
Defina também uma variável do tipo picturebox que será usada no formulário para exibir as imagens:
Dim
pb1 As New PictureBoxO código do evento Click do botão Procurar é o seguinte :
Private Sub btnProcurar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcurar.Click 'configura o controle OpenFileDialog OpenFileDialog1.Multiselect = False OpenFileDialog1.Filter = "Jpeg|*.jpg|Gif|*.gif|Jpeg|*.jpeg|Bitmap|*.bmp" OpenFileDialog1.RestoreDirectory = True OpenFileDialog1.Title = "Procurar" 'se não cancelou então atribui o nome selecionado a caixa de texto If OpenFileDialog1.ShowDialog <> DialogResult.Cancel Then txtImagem.Text = OpenFileDialog1.FileName End If End Sub |
No evento Click do botão - Incluir na Lista - é dado abaixo:
Private Sub btnIncluiLista_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncluiLista.Click 'se há alguma informação na caixa de texto então inclui na lista senão avisa e sai If txtImagem.TextLength <= 0 Then MessageBox.Show("Selecione um arquivo...", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button3) Exit Sub Else lstImagem.Items.Add(txtImagem.Text) End If End Sub |
O código do botão - Iniciar Exibição dos Slides - é o seguinte :
Private Sub btnInciaSlides_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInciaSlides.Click 'se há imagem no list box então inicia slides senão sai... If lstImagem.Items.Count = 0 Then MessageBox.Show("Inclua pelo menos uma imagem...", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button3) btnProcurar.Focus() Exit Sub Else 'define um novo objeto formulário Dim frmSlide As New Form 'configura o novo formulário frmSlide.WindowState = FormWindowState.Maximized frmSlide.Size = New Size(20, 20) frmSlide.MaximizeBox = False frmSlide.MinimizeBox = False frmSlide.BackColor = Color.Black frmSlide.Text = "Show de slides" pb1.Dock = DockStyle.Fill pb1.BackColor = Color.Black pb1.Size = New Size(30, 30) pb1.SizeMode = PictureBoxSizeMode.StretchImage pb1.BorderStyle = BorderStyle.Fixed3D 'inclui o picturebox no formulario frmSlide.Controls.Add(pb1) frmSlide.Show() Me.Hide() 'define uma linha de execução Dim slideLinhaExecucao As New Thread(AddressOf exibeSlides) 'inicia a thread slideLinhaExecucao.Start() End If End Sub
|
A rotina - exibeSlides - para iniciar a exibição dos slides em tela cheia é dada abaixo:
Sub exibeSlides() Dim k, s As String Dim i, j, m As Integer 'percorre o listbox For i = 0 To lstImagem.Items.Count - 1 'obtem o item da lista k = lstImagem.Items.Item(i) 'atribui a variavel s s = k 'atribui a imagem ao controle picImagem - pb1 pb1.Image = Image.FromFile(s) 'espera por 2 segundos Thread.Sleep(2000) Next Me.Hide() Exit Sub End Sub
|
O código do evento Change do Listbox faz com que a imagem selecionada seja exibida no picturebox:
Private Sub lstImagem_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstImagem.SelectedIndexChanged 'atribui a imagem do listbox ao controle picturebox picImagem.Image = Image.FromFile(lstImagem.SelectedItem) End Sub |
Da mesma forma o evento Change do TextBox faz com que a nova imagem seja exibida ao usuário:
Private Sub txtImagem_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtImagem.TextChanged 'define o modo de exibição do controle picturebox picImagem.SizeMode = PictureBoxSizeMode.StretchImage 'carrega a imagem do arquivo de texto para exibição picImagem.Image = Image.FromFile(txtImagem.Text) End Sub |
O código para encerrar a aplicação e o código para ativar o aplicativo de Email quando o usuário clicar no link para o email são :
Private Sub
Button4_Click(ByVal sender
As System.Object, ByVal
e As System.EventArgs)
Handles Button4.Click 'sai da aplicação |
Private Sub
LinkLabel1_LinkClicked_1(ByVal sender
As System.Object, ByVal
e As System.Windows.Forms.LinkLabelLinkClickedEventArgs)
Handles LinkLabel1.LinkClicked
'inicia a aplicação associado ao email End Sub |
Executando a aplicação e selecionando algumas imagens temos a seguinte exibição :
Ao clicar no botão para iniciar a exibição dos slides , os mesmos serão exibidos em tela cheia.
Pegue o projeto aqui : slideshow.zip
Eu sei , é apenas VB.NET , mas eu gosto...
José Carlos Macoratti