Prezentátor obrázků v určité složce   zodpovězená otázka

VB.NET, WinForms

Ahoj, v jedné složce mám obrázky pojmentvané obrázky Picture1.jpg, Picture2.jpg, Picture3.jpg... Ve formuláři mám Timer a PictureBox. Potřebuji, aby se po intervalu v Timeru promítly Všechny obrázky ve složce, nezávisle na počtu a prezentace se nesmí víckrát opakovat. Jde to nějak udělat? díky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak můžete třeba načíst cesty k souborům do pole Stringů a při každém tiku inkrementovat index o jednu a zobrazit soubor na pozici indexu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravim,

jelikož pospíchám na vlak, stihl jsem aspoň napsat, jak vypíšete všechny názvy souborů ze složky s tím, že vyfiltrujete soubory.

        Dim din As New DirectoryInfo("C:\Directory")
        Dim Files As FileInfo() = din.GetFiles("*.jpg")
        For Each file As FileInfo In Files
            ListBox1.Items.Add(file.Name)
        Next

Až se večer vrátím a když zbude čas, tak ještě nějaký kód připíši.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

O DirectoryInfo a FileInfo jsem nevěděl, zatím děkuji :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak nějak jsem to sesmolil, ale je to celkem nehezká věc, spíše bych to bral jako nakopnutí, šlo by to udělat líp.

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim thr As New Thread(AddressOf zobraz)
        thr.Start()
        
    End Sub
    Sub zobraz()
        Dim ptch As String
        Dim i As Integer
        For i = 0 To ListBox1.Items.Count - 1
            ptch = "C:\Directory\" + ListBox1.Items.Item(i)

            PictureBox1.Image = Image.FromFile(ptch)
            Thread.Sleep(3000)
        Next
    End Sub

Pokud chcete aby si složku vybral uživatel, tak to myslím lehce uděláte, kdyžtak se ozvěte.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tohle je blbost, protože není zajištěna synchronizace vláken, tudíž to skončí vyjímkou na řádku PictureBox1.Image = Image.FromFile(ptch) (možná už na ListBox1.Items.Count). Pro tyto účely je System.Windows.Forms.Timer, který má synchronizaci zabudovanou v sobě.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Psal jsem, že je to dost blbé řešení, mě to teda fungovalo a vyjímku nehodilo,ale ano máte pravdu, že je na to Timer vhodnější. Díky za reakci.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji =) Teď už je to velmi snadné opravit k obrazu svému i doladit. Ještě jednou díky!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback