Meilleur auteur de réponses
timer

Question
-
bonjour
je suis entrain de créer un appli pour visionneuse de photo elle fonctionne bien par contre je voudrais démarrer un diaporama avec changement de vue toute le s3secondes je bloque complètement j’ai mis l'intervalle de mon timer à 1000 mais je ne sais pas faire le enclenchement du changement de vue merci de m'aider à écrire ce code
meilleurs voeux pour 2016
Réponses
-
Après avoir regardé les détails de ImageList, il semble que la limite de taille est 16x16... parfait pour des icones mais vraiment pas la solution optimale pour des images...
Donc on remplace ImageList par List(of bitmap)...
Public Class Form1 Private _booTacheEnCours As Boolean = False Private unTimer As System.Timers.Timer Private DiapoNumber As Integer = 1 'Liste des types d'image Private ExtensionsFichiersImages() As String = {".gif", ".GIF", ".jpg", ".JPG", ".bmp", ".png", ".tiff", ".TIFF"} Private ListeDiapos As List(Of Bitmap) 'ImageList Private Sub ChargementImagesDepuisDossier(ByRef CheminDossier As String) 'Création de la liste d'image ImageList ListeDiapos = New List(Of Bitmap) ' New ImageList 'Récupération des fichiers depuis le dossier en question Dim FichiersDansDir() As String = IO.Directory.GetFiles(CheminDossier) Try 'Pour chaque fichier on vérifie la validité de l'extension et on le charge dans l'ImageList For Each FichierImage As String In FichiersDansDir Dim ExtensionFichier As String = Path.GetExtension(FichierImage) If ExtensionsFichiersImages.Contains(ExtensionFichier) = True Then Dim diapo As System.Drawing.Image = bitmap.FromFile(FichierImage) ListeDiapos.Add(diapo) 'ListeDiapos.Images.Add(diapo) End If Next Catch ex As Exception Debug.Print("Erreur " & ex.Message & " type: " & ex.ToString) End Try End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Lancer le timer pour lancer la visionneuse If _booTacheEnCours = False Then unTimer = New System.Timers.Timer() unTimer.Interval = 500 ' Déclaration de l'événement déclenché à chaque fin du timer AddHandler unTimer.Elapsed, AddressOf OnTimedEvent unTimer.AutoReset = True ' Démarrage unTimer.Enabled = True Button1.Text = "Arrêter visionneuse" _booTacheEnCours = True Else unTimer.Stop() Button1.Text = "Démarrer visionneuse" _booTacheEnCours = False End If End Sub Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs) Try 'On affiche l'heure de l'événement 'Select Case DiapoNumber ' Case 1 ' PictureBox1.Image = My.Resources.Pic1 ' Case 2 ' PictureBox1.Image = My.Resources.Pic2 ' Case 3 ' PictureBox1.Image = My.Resources.Pic3 'End Select If DiapoNumber < ListeDiapos.Count - 1 Then PictureBox1.Image = ListeDiapos(DiapoNumber) 'ListeDiapos.Images(DiapoNumber) DiapoNumber += 1 Else PictureBox1.Image = ListeDiapos(0) 'ListeDiapos.Images(0) DiapoNumber = 1 End If Catch ex As Exception Debug.Print("Exception:" & ex.Message) End Try End Sub
Cyrille Precetti
- Modifié Cyrille Précetti dimanche 3 janvier 2016 15:03
- Marqué comme réponse SIMONGEORGES dimanche 3 janvier 2016 16:42
Toutes les réponses
-
Voila du code pour cela (500ms j'ai pas la patience :)) Il faut mettre l'affichage dans l'event déclenché par le Timer.
Public Class Form1 Private _booTacheEnCours As Boolean = False Private unTimer As System.Timers.Timer Private DiapoNumber As Integer = 1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Lancer le timer pour lancer la visionneuse If _booTacheEnCours = False Then unTimer = New System.Timers.Timer() unTimer.Interval = 500 ' Déclaration de l'événement déclenché à chaque fin du timer AddHandler unTimer.Elapsed, AddressOf OnTimedEvent unTimer.AutoReset = True ' Démarrage unTimer.Enabled = True Button1.Text = "Arrêter visionneuse" _booTacheEnCours = True Else unTimer.Stop() Button1.Text = "Démarrer visionneuse" _booTacheEnCours = False End If End Sub Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs) Try 'On affiche l'heure de l'événement Select Case DiapoNumber Case 1 PictureBox1.Image = My.Resources.Pic1 Case 2 PictureBox1.Image = My.Resources.Pic2 Case 3 PictureBox1.Image = My.Resources.Pic3 End Select If DiapoNumber < 3 Then DiapoNumber += 1 Else DiapoNumber = 1 End If Catch ex As Exception Debug.Print("Exception:" & ex.Message) End Try End Sub
Les Pic1 à Pic3 sont dans les ressources de la solution...plus simple pour l'exemple.
Voila ce que cela donne:
Note que la PictureBox est en mode StretchImage....
Bonne Année de codage 2016
Cyrille Precetti
- Modifié Cyrille Précetti vendredi 1 janvier 2016 15:53
-
-
Voulez-vous dire OpenFileDialog?
Cela serai pour demander quel fichier à l'utilisateur. Il faudrait charger toutes les images dans une ImageList puis les afficher dans un PictureBox.
ImageList1.Images.Add(Image.FromFile(NomDuFichierImage))
Pouvez vous poser le code que vous voulez utiliser pour charger ces images?Cyrille Precetti
-
bonjour
je vous communique le code complet de ma visionneuse qui fonctionne très bien manuellement à la quelle je voudras ajouter le diaporama le chemin du fichier est sur mon bureau il porterais le nom "mes photo" si on peut l’automatiser
je vais tester votre réponse
Public Class Form1 Private Sub clearButton_Click() Handles clearButton.Click ' Clear the picture. PictureBox1.Image = Nothing End Sub Private Sub backgroundButton_Click() Handles diapoButton.Click ' Show the color dialog box. If the user clicks OK, change the ' PictureBox control's background to the color the user chose. If ColorDialog1.ShowDialog() = DialogResult.OK Then PictureBox1.BackColor = ColorDialog1.Color End If End Sub Private Sub closeButton_Click() Handles closeButton.Click ' Close the form. Close() End Sub Private Sub showButton_Click(sender As Object, e As System.EventArgs) Handles showButton.Click If OpenFileDialog1.ShowDialog() = DialogResult.OK Then PictureBox1.Load(OpenFileDialog1.FileName) End If End Sub Private Sub CheckBox1_CheckedChanged() Handles CheckBox1.CheckedChanged ' If the user selects the Stretch check box, change ' the PictureBox's SizeMode property to "Stretch". If the user ' clears the check box, change it to "Normal". If CheckBox1.Checked Then PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage Else PictureBox1.SizeMode = PictureBoxSizeMode.Normal End If End Sub End Class
merci d'avance
-
pouvez vous préciser ce que vous dites à propos des fichiers images; "Mes Photos" est-il un dossier sur votre bureau?
Si c'est le cas je suggère de faire un chargement des images dans un contrôle ImageList, puis de laisser le Timer déclencher l'affichage dans la picbox. Voici le code qui fonctionne avec imageList, à vous de mettre le dialog pour récupérer le nom du dossier ou mettre le nom.
Imports System.IO Public Class Form1 Private _booTacheEnCours As Boolean = False Private unTimer As System.Timers.Timer Private DiapoNumber As Integer = 1 'Liste des types d'image Private ExtensionsFichiersImages() As String = {".gif", ".GIF", ".jpg", ".JPG", ".bmp", ".png", ".tiff", ".TIFF"} Private ListeDiapos As ImageList Private Sub ChargementImagesDepuisDossier(ByRef CheminDossier As String) 'Création de la liste d'image ImageList ListeDiapos = New ImageList 'Récupération des fichiers depuis le dossier en question Dim FichiersDansDir() As String = IO.Directory.GetFiles(CheminDossier) Try 'Pour chaque fichier on vérifie la validité de l'extension et on le charge dans l'ImageList For Each FichierImage As String In FichiersDansDir Dim ExtensionFichier As String = Path.GetExtension(FichierImage) If ExtensionsFichiersImages.Contains(ExtensionFichier) = True Then Dim diapo As System.Drawing.Image = Image.FromFile(FichierImage) ListeDiapos.Images.Add(diapo) End If Next Catch ex As Exception Debug.Print("Erreur " & ex.Message & " type: " & ex.ToString) End Try End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Lancer le timer pour lancer la visionneuse If _booTacheEnCours = False Then unTimer = New System.Timers.Timer() unTimer.Interval = 500 ' Déclaration de l'événement déclenché à chaque fin du timer AddHandler unTimer.Elapsed, AddressOf OnTimedEvent unTimer.AutoReset = True ' Démarrage unTimer.Enabled = True Button1.Text = "Arrêter visionneuse" _booTacheEnCours = True Else unTimer.Stop() Button1.Text = "Démarrer visionneuse" _booTacheEnCours = False End If End Sub Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs) Try 'On affiche l'heure de l'événement 'Select Case DiapoNumber ' Case 1 ' PictureBox1.Image = My.Resources.Pic1 ' Case 2 ' PictureBox1.Image = My.Resources.Pic2 ' Case 3 ' PictureBox1.Image = My.Resources.Pic3 'End Select If DiapoNumber < ListeDiapos.Images.Count - 1 Then PictureBox1.Image = ListeDiapos.Images(DiapoNumber) DiapoNumber += 1 Else PictureBox1.Image = ListeDiapos.Images(1) DiapoNumber = 1 End If Catch ex As Exception Debug.Print("Exception:" & ex.Message) End Try End Sub 'Au lancement le dossier contenant les diapos est chargé Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Call ChargementImagesDepuisDossier("C:\Users\Cyrille\Desktop\Diapos") End Sub
Cyrille Precetti
Marquez comme solution si cela convient - Happy New Year- Modifié Cyrille Précetti samedi 2 janvier 2016 09:04
-
un grand merci
cela fonctionne bien par contre les images sont flou j’ai bien mis le picturebox en strechimage et j’ai teste les autres possibilités seule en mode normal je peu voir mes photos hales trop petites
comment faire là je sais pas fraie
voicice que je vois
- Modifié SIMONGEORGES samedi 2 janvier 2016 10:45
-
Après avoir regardé les détails de ImageList, il semble que la limite de taille est 16x16... parfait pour des icones mais vraiment pas la solution optimale pour des images...
Donc on remplace ImageList par List(of bitmap)...
Public Class Form1 Private _booTacheEnCours As Boolean = False Private unTimer As System.Timers.Timer Private DiapoNumber As Integer = 1 'Liste des types d'image Private ExtensionsFichiersImages() As String = {".gif", ".GIF", ".jpg", ".JPG", ".bmp", ".png", ".tiff", ".TIFF"} Private ListeDiapos As List(Of Bitmap) 'ImageList Private Sub ChargementImagesDepuisDossier(ByRef CheminDossier As String) 'Création de la liste d'image ImageList ListeDiapos = New List(Of Bitmap) ' New ImageList 'Récupération des fichiers depuis le dossier en question Dim FichiersDansDir() As String = IO.Directory.GetFiles(CheminDossier) Try 'Pour chaque fichier on vérifie la validité de l'extension et on le charge dans l'ImageList For Each FichierImage As String In FichiersDansDir Dim ExtensionFichier As String = Path.GetExtension(FichierImage) If ExtensionsFichiersImages.Contains(ExtensionFichier) = True Then Dim diapo As System.Drawing.Image = bitmap.FromFile(FichierImage) ListeDiapos.Add(diapo) 'ListeDiapos.Images.Add(diapo) End If Next Catch ex As Exception Debug.Print("Erreur " & ex.Message & " type: " & ex.ToString) End Try End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Lancer le timer pour lancer la visionneuse If _booTacheEnCours = False Then unTimer = New System.Timers.Timer() unTimer.Interval = 500 ' Déclaration de l'événement déclenché à chaque fin du timer AddHandler unTimer.Elapsed, AddressOf OnTimedEvent unTimer.AutoReset = True ' Démarrage unTimer.Enabled = True Button1.Text = "Arrêter visionneuse" _booTacheEnCours = True Else unTimer.Stop() Button1.Text = "Démarrer visionneuse" _booTacheEnCours = False End If End Sub Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs) Try 'On affiche l'heure de l'événement 'Select Case DiapoNumber ' Case 1 ' PictureBox1.Image = My.Resources.Pic1 ' Case 2 ' PictureBox1.Image = My.Resources.Pic2 ' Case 3 ' PictureBox1.Image = My.Resources.Pic3 'End Select If DiapoNumber < ListeDiapos.Count - 1 Then PictureBox1.Image = ListeDiapos(DiapoNumber) 'ListeDiapos.Images(DiapoNumber) DiapoNumber += 1 Else PictureBox1.Image = ListeDiapos(0) 'ListeDiapos.Images(0) DiapoNumber = 1 End If Catch ex As Exception Debug.Print("Exception:" & ex.Message) End Try End Sub
Cyrille Precetti
- Modifié Cyrille Précetti dimanche 3 janvier 2016 15:03
- Marqué comme réponse SIMONGEORGES dimanche 3 janvier 2016 16:42
-