Hoje vou apresentar uma aplicação que exibe imagens de uma pasta selecionada ao estilo show de slides usando a linguagem VB .NET. |
A aplicação usa o controle Timer para realizar a temporização e controlar a velocidade de exibição das imagens no controle PictureBox.
Nesta aplicação você vai aprender a usar os seguintes controles:
Timer - ativar/desativar e definir a propriedade Interval;
PictureBox - Exibir imagens
MenuStrip - Definir menus
TrackBar - Controlar
O programa utiliza a classe Slides.vb para definir os métodos que controlam a exibição das imagens no formulário;.
Recursos Usados:
Criando o projeto no VS Community 2017
Abra no VS community 2017 e no menu File clique em New Project;
A seguir selecione o template Visual Basic -> Windows -> Windows Forms Application e informe o nome SlideShow e clique em OK;
Agora abra o formulário Form1.vb e inclua os seguintes controles no formulário:
1 MenuStrip
1 PictureBox
1 TrackBar
1 Timer
Disponha os controles conforme o leiaute da figura abaixo:
Definindo o código do formulário
No formulário frmMain.vb do projeto inclua o código abaixo:
Public Class frmMain
Private WithEvents Slides As New Slides
Private Sub BrowseToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles BrowseToolStripMenuItem.Click
Dim Browse As New FolderBrowserDialog
Browse.Description = "Selecione a pasta de imagens"
If Browse.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
Try
Slides.Procurar(Browse.SelectedPath)
If Slides.TotalImages >= 0 Then
TrackBar.Value = 0
TrackBar.Minimum = 0
TrackBar.Maximum = CInt(Slides.TotalImages)
End If
Slides.Executar() ' executa o show de slides
Me.Text = "Show de Slides - " & Browse.SelectedPath
Catch ex As Exception
' Não faz nada se der um erro
End Try
End If
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles ExitToolStripMenuItem.Click
Dim Response As MsgBoxResult
Response = MsgBox("Deseja encerrar o programa ?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Show de Slides")
If Response = MsgBoxResult.Yes Then
End
End If
End Sub
Private Sub PlayPauseToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles PlayPauseToolStripMenuItem.Click
If Slides.Executar Then
If Slides.EmPausa Then
Slides.Continuar()
Else
Slides.Pausar()
End If
Else
Slides.Executar()
End If
End Sub
Private Sub StopToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles StopToolStripMenuItem.Click
Slides.Parar()
End Sub
Private Sub SlowToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles SlowToolStripMenuItem.Click
Slides.Velocidade = 3000
End Sub
Private Sub MediumToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MediumToolStripMenuItem.Click
Slides.Velocidade = 1500
End Sub
Private Sub FastToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles FastToolStripMenuItem.Click
Slides.Velocidade = 500
End Sub
Private Sub RepeatToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles RepeatToolStripMenuItem.Click
Slides.RepetirExecucao = RepeatToolStripMenuItem.Checked
End Sub
Private Sub TrackBar_Scroll(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles TrackBar.Scroll
Slides.Mover(TrackBar.Value)
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "Show de Slides"
End Sub
Private Sub Slides_Slide(ByVal Filename As String) Handles Slides.Slide
Visualizador.ImageLocation = Filename
TrackBar.Value = Slides.ImagemAtual
End Sub
End Class
|
Definindo o código da classe Slides do projeto
Vamos criar uma classe chamada Slides.vb em nosso projeto via menu Project -> Add Class.
Inclua o código abaixo nesta classe:
Public Class Slides
' Private Members
Private WithEvents timerExibir As New Timer
Private ListaImagens As New ArrayList
Private ProcurarSucesso As Boolean
Private Intervalo As Integer = 1500
Private TotalImagens As Integer = 0
Private ItemAtual As Integer = 0
Private Executando As Boolean
Private Pausado As Boolean
Private Repetir As Boolean
' métodos privados
Private Function Arquivos(ByRef Path As String,
ByRef Filtro As String) As ArrayList
Dim TodosArquivos As New ArrayList
Dim dirInfo As New IO.DirectoryInfo(Path)
If dirInfo.Exists Then ' verifica se o caminho existe
Dim dirArquivos As IO.FileInfo() = dirInfo.GetFiles("*.*")
' Percorre o caminho para os arquivos pelo filtro
For Each fileinfo As IO.FileInfo In dirArquivos
If InStr(Filtro, fileinfo.Extension, CompareMethod.Text) > 0 Then
TodosArquivos.Add(fileinfo.FullName) ' Adicionar no ArrayList
End If
Next
End If
Return TodosArquivos
End Function
' Construtor
Public Sub New()
timerExibir.Enabled = False
timerExibir.Interval = Intervalo
End Sub
' métodos públicos
Public Function Procurar(ByVal Path As String) As Boolean
ListaImagens.Clear() ' limpa lista de imagens
ListaImagens = Arquivos(Path, ".jpg.png.gif.bmp.jpeg")
TotalImagens = ListaImagens.Count - 1 ' total das imagens
If TotalImagens > 0 Then 'imagens encontradas
ProcurarSucesso = True
Return True
Else
Return False ' sem imagens
End If
End Function
Public Function Executar() As Boolean
If ProcurarSucesso Then
Executando = True
timerExibir.Enabled = True
If Pausado Then
Me.Pausar()
Else
Pausado = False
End If
End If
End Function
Public Function Parar() As Boolean
If ProcurarSucesso Then
timerExibir.Enabled = False
ItemAtual = 0
Executando = False
Pausado = False
End If
Return False
End Function
Public Function Pausar() As Boolean
If ProcurarSucesso Then
timerExibir.Enabled = False
Pausado = Not timerExibir.Enabled
Return Pausado
End If
Return False
End Function
Public Function Continuar() As Boolean
If ProcurarSucesso And Pausado Then
timerExibir.Enabled = True
Pausado = Not timerExibir.Enabled
Return Pausado
End If
Return False
End Function
Public Function Mover(ByVal Index As Integer) As Boolean
If ProcurarSucesso Then
If Index < ListaImagens.Count Then
ItemAtual = Index
If Executando Then
Me.Executar()
End If
End If
End If
End Function
' Public Properties
Public Property RepetirExecucao() As Boolean
Get
Return Repetir
End Get
Set(ByVal Value As Boolean)
If Repetir <> Value Then
Repetir = Value
End If
End Set
End Property
Public Property Velocidade() As Integer
Get
Return Intervalo
End Get
Set(ByVal Value As Integer)
If Value >= 500 And Value < 3000 And Value <> Intervalo Then
Intervalo = Value
timerExibir.Interval = Intervalo
End If
End Set
End Property
Public ReadOnly Property TotalImages() As Integer
Get
Return TotalImagens
End Get
End Property
Public ReadOnly Property ImagemAtual() As Integer
Get
Return ItemAtual
End Get
End Property
Public ReadOnly Property EmExecucao() As Boolean
Get
Return Executando
End Get
End Property
Public ReadOnly Property EmPausa() As Boolean
Get
Return Pausado
End Get
End Property
Private Sub TimerExibir_Tick(ByVal sender As Object,
ByVal e As System.EventArgs) _
Handles timerExibir.Tick
If ProcurarSucesso And Executando Then
If ItemAtual < ListaImagens.Count Then
RaiseEvent Slide(CStr(ListaImagens.Item(ItemAtual)))
ItemAtual += 1
Else
If Repetir Then
ItemAtual = 0 ' Reseta se Repetir
End If
End If
End If
End Sub
' Evento
Public Event Slide(ByVal Filename As String)
End Class
|
Essa classe contém os métodos usados para gerenciar as imagens exibindo-as como slides.
Executando o projeto teremos o resultado a seguir:
Pegue o projeto completo aqui: VBNET_SLIDESHOW.zip
Se
dissermos que temos comunhão com ele (Jesus), e andarmos em trevas, mentimos, e
não praticamos a verdade.
Mas, se andarmos na luz, como ele na luz está, temos comunhão uns com os outros,
e o sangue de Jesus Cristo, seu Filho, nos purifica de todo o pecado.
1 João 1:6,7
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 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Lendo imagens em um banco de dados MySQL - Macoratti