none
Carregar IMAGENS DE UMA PASTA RRS feed

  • Pergunta

  • Pessoal, estou precisando de um apoio de vc's. Tenho em meu projeto de VB2008 um form, no mesmo eu tenho uma picturebox. Tenho em uma pasta + / - 15 imagens a serem apresentadas tipo o esquema de powerpoint. Como faço para carregar todas as imagens na picturebox e passar uma a uma a cada 15seg, chegando na última, voltar a passar novamente sem parar ?
    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com
    terça-feira, 10 de janeiro de 2012 11:49

Respostas

  • Tem um exemplo bem explicado aqui, Eu achei enquanto procurava artigos para lhe ajudar.

    http://www.macoratti.net/vbn_ses1.htm

    olhe também a lógica que eu criei antes de achar isso no site do macoratti.

     

    Projeto legal esse seu (:

    Então vamos lá, vou te passar a receita que veio na mente ao ler sua dúvida.

    Primeiro, vamos listar os arquivos da pasta:

    http://foreachcode.wordpress.com/2008/10/13/c-aspnet-listando-pastas-e-arquivos-de-um-diretorio/

    http://www.macoratti.net/vbn_io.htm

    http://www.devmedia.com.br/post-1228-Dicas--NET-Listar-Arquivos-de-um-Diretorio.html

    Depois de listados, você escolhe o modo de trabalhar.

    Você pode jogar os nomes dos arquivos em uma COMBOBOX ou em um ARRAY.

    Depois que tiver a lista dos arquivos em uma pasta, faça algo parecido com isso se for array

    Dim Contador_Quantidade_Arquivos = Nome_do_array.Count() 

    Dim Contador = 0

    'Aqui voce está colocando no contador_quantidade_arquivos a quantidade de arquivos que tem na pasta.

    'A variável Contador irá andar pelo array.

    Então, depois faça isso

    While Contador < Contador_Quantidade_Arquivos

    'Aqui você coloca o timer de 15 segundos

    'VEJA COMO USAR O TIMER NOS LINKS ABAIXO

    http://alanrossi.wordpress.com/2011/07/18/usando-timer-em-c-windows-forms/

    http://www.macoratti.net/vbn_time.htm

     

    Picturebox = Array[Contador]

     

    Contador = Contador +1

    End While

    Depois que sair do LOOP coloca um 

    <pre lang="x-vbnet">if (MessageBox.Show("DESEJA A LISTA NOVAMENTE?""SLIDE SHOW Informa",MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1) == DialogResult.Yes) then
    
    'Voce vai zerar o contador que anda pelo array
    
    Contador = 0
    
    'Depois chamar o código.
    
    'Chama os códigos de mostrar as fotos novamente ( Transforme eles em uma função, isso vai facilitar)
    
    
    
    end if
    


     

    Fim (:

     

     

     

     

     

     

     

     

     

    terça-feira, 10 de janeiro de 2012 14:17
  • Eu fiz um código rapidinho ae, mas nem testei, ve se resolve seu problema:

     

    Imports System.IO
    
    Public Class Form1
    
        Private indexImagem As Integer = 0
        Private caminhoImagem As New List(Of String)
        Private maxIndexImagem As Integer = -1
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
            PictureBox1.Load(caminhoImagem(indexImagem)) '--Carrega a foto no PictureBox
            If indexImagem = maxIndexImagem Then
                indexImagem = 0 '--Se a imagem for a ultima ele volta pra primeira
            Else
                indexImagem += 1 '--Se não for a ultima ele pula pra próxima
            End If
    
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
            Dim dir As New DirectoryInfo("D:\foto") '--Indica o caminho do diretório que fica as imagens
    
            Dim arq() As FileInfo = dir.GetFiles()  '--Carrega os arquivos que tem dentro do diretório
    
            For i As Integer = 0 To arq.Count - 1 '--For passando em todos arquivos existentes
                caminhoImagem.Add(arq(i).FullName)  '--Guarda o caminho de todos os arquivos em um vetor string
                maxIndexImagem += 1 '--Guarda os indexes dos vetores existentes
            Next '---
    
    
        End Sub
    
    End Class
    
    


     No form é só você adcionar um Timer que fica rodando de 15 em 15 segundos e deixar a propriedade 'enabled = true'.

     E adicionar um 'PictureBox', se você trocar o nome é só trocar no código, mais acho que vai funcionar.

    • Marcado como Resposta Estanislau Frade quinta-feira, 12 de janeiro de 2012 20:43
    terça-feira, 10 de janeiro de 2012 15:03

Todas as Respostas

  • Tem um exemplo bem explicado aqui, Eu achei enquanto procurava artigos para lhe ajudar.

    http://www.macoratti.net/vbn_ses1.htm

    olhe também a lógica que eu criei antes de achar isso no site do macoratti.

     

    Projeto legal esse seu (:

    Então vamos lá, vou te passar a receita que veio na mente ao ler sua dúvida.

    Primeiro, vamos listar os arquivos da pasta:

    http://foreachcode.wordpress.com/2008/10/13/c-aspnet-listando-pastas-e-arquivos-de-um-diretorio/

    http://www.macoratti.net/vbn_io.htm

    http://www.devmedia.com.br/post-1228-Dicas--NET-Listar-Arquivos-de-um-Diretorio.html

    Depois de listados, você escolhe o modo de trabalhar.

    Você pode jogar os nomes dos arquivos em uma COMBOBOX ou em um ARRAY.

    Depois que tiver a lista dos arquivos em uma pasta, faça algo parecido com isso se for array

    Dim Contador_Quantidade_Arquivos = Nome_do_array.Count() 

    Dim Contador = 0

    'Aqui voce está colocando no contador_quantidade_arquivos a quantidade de arquivos que tem na pasta.

    'A variável Contador irá andar pelo array.

    Então, depois faça isso

    While Contador < Contador_Quantidade_Arquivos

    'Aqui você coloca o timer de 15 segundos

    'VEJA COMO USAR O TIMER NOS LINKS ABAIXO

    http://alanrossi.wordpress.com/2011/07/18/usando-timer-em-c-windows-forms/

    http://www.macoratti.net/vbn_time.htm

     

    Picturebox = Array[Contador]

     

    Contador = Contador +1

    End While

    Depois que sair do LOOP coloca um 

    <pre lang="x-vbnet">if (MessageBox.Show("DESEJA A LISTA NOVAMENTE?""SLIDE SHOW Informa",MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1) == DialogResult.Yes) then
    
    'Voce vai zerar o contador que anda pelo array
    
    Contador = 0
    
    'Depois chamar o código.
    
    'Chama os códigos de mostrar as fotos novamente ( Transforme eles em uma função, isso vai facilitar)
    
    
    
    end if
    


     

    Fim (:

     

     

     

     

     

     

     

     

     

    terça-feira, 10 de janeiro de 2012 14:17
  • Eu fiz um código rapidinho ae, mas nem testei, ve se resolve seu problema:

     

    Imports System.IO
    
    Public Class Form1
    
        Private indexImagem As Integer = 0
        Private caminhoImagem As New List(Of String)
        Private maxIndexImagem As Integer = -1
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
            PictureBox1.Load(caminhoImagem(indexImagem)) '--Carrega a foto no PictureBox
            If indexImagem = maxIndexImagem Then
                indexImagem = 0 '--Se a imagem for a ultima ele volta pra primeira
            Else
                indexImagem += 1 '--Se não for a ultima ele pula pra próxima
            End If
    
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
            Dim dir As New DirectoryInfo("D:\foto") '--Indica o caminho do diretório que fica as imagens
    
            Dim arq() As FileInfo = dir.GetFiles()  '--Carrega os arquivos que tem dentro do diretório
    
            For i As Integer = 0 To arq.Count - 1 '--For passando em todos arquivos existentes
                caminhoImagem.Add(arq(i).FullName)  '--Guarda o caminho de todos os arquivos em um vetor string
                maxIndexImagem += 1 '--Guarda os indexes dos vetores existentes
            Next '---
    
    
        End Sub
    
    End Class
    
    


     No form é só você adcionar um Timer que fica rodando de 15 em 15 segundos e deixar a propriedade 'enabled = true'.

     E adicionar um 'PictureBox', se você trocar o nome é só trocar no código, mais acho que vai funcionar.

    • Marcado como Resposta Estanislau Frade quinta-feira, 12 de janeiro de 2012 20:43
    terça-feira, 10 de janeiro de 2012 15:03
  • Vou fazer os testes e já retorno a vc's, adiantando muito Obrigado pelo concedido. A minha idéia é primeiro fazer a trocar de informação do Sistema por imagens, mas o que eu quero mesmo é montar um sistema de informações Online aqui onde trabalho, e usar uma TV de 52" para ficar na oficina de manutenção passando os dados diários da empresa ou determinado setor, como produção, disponibilidade física, melhorias e ETC. Caso alguem tenha alguma sugestão ficarei grato em ouvir-las.
    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com
    terça-feira, 10 de janeiro de 2012 16:21
  • Paulo, o código que passou rodou certinho.... Comecei a fazer uns testes.... Qdo eu acrescento uma nova imagem, ele não tornar a carregar a sequencia com essa nova imagem. Outrro teste que fiz é, quando eu retiro uma imagem da pasta local, que está carregado no sistema, ele retorna com erro informando que o arquivo não foi encontrado. Existe a possibilidade de isso não acontecer ? Pois a idéia é atualizar as imagens sem ser necessário parar a execução do sistema.
    Att, Estanislau Frade msn: lauedele@hotmail.com email: estanislaufrade@yahoo.com.br estanislau.frade@vale.com
    quarta-feira, 11 de janeiro de 2012 17:08