none
Control avec PictureBox RRS feed

  • Question

  • Bonjour à tous

    J'ai créé une form pour voir des images.

    J'aimerais que cette form charge la première image d'un dossier.

    Je souhaite ne pas indiquer à ma picturebox le nom de l'image, j'aimerais qu'il déduise automatiquement la première image à afficher de manière Stretch.

    J'aimerais également ajouter deux boutons pour aller ou bien revenir à l'image suivante et précédente.

     

    J'ai bien essayé de commencer un code, mais je bloque pour celui ci.

    J'ai alors pris l'initiative de suivre le tutoriel au démarrage de Visual Basic 2010, mais le chargement de l'image se fais à travers une OpenFileDialog.

    Il ne me manque plus que le code pour faire fonctionner tout ça.

     

     

     

     

    samedi 15 janvier 2011 18:23

Réponses

  • Bonjour,

    Attention, la variable position varie entre 0 et le (nombre de fichier - 1). Donc vous devez pour le bouton précédent :

     If Me.position = 0 Then
       MsgBox("Aucune image précédente")
      Else
       Me.position = Me.position - 1
       Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
      End If
    
    

    Et le bouton suivant :

    If Me.position = Me.images.Length - 1 Then
       MsgBox("Aucune image suivant")
      Else
       Me.position = Me.position + 1
       Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
      End If
    
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse Crevette13 lundi 17 janvier 2011 10:37
    lundi 17 janvier 2011 09:07
    Modérateur

Toutes les réponses

  • Bonjour,

    Il faut créer une fenêtre et placer deux boutons "précédent" et "suivant". Voici le code de cette fenêtre :

    Imports System.IO
    
    Public Class Form1
    
      Private images As String()
      Private position As Integer
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Récupérer les images dans un fichier
        Me.images = Directory.GetFiles("< Répertoire >", "*.jpg")
    
        ' Charger la première image
        Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
      End Sub
    
      Private Sub precedent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles precedent.Click
        Me.position = Me.position + 1
        Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
      End Sub
    
      Private Sub suivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles suivant.Click
        Me.position = Me.position - 1
        Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
      End Sub
    
    End Class
    
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    dimanche 16 janvier 2011 21:19
    Modérateur
  • Je test votre code de suite et vous tiens au courant, merci.
    dimanche 16 janvier 2011 21:55
  • Bonsoir

     

    Votre code fonctionne, merci de votre aide.

    Cependant, je rencontre un léger soucis avec la fonction image suivante.

    Lorsque je suis à l'image 1, si je clique sur image précédente, l'application bug, j'ai alors pris l'initiative de mettre une condition if
    qui prévient l'utilisateur par une MsgBox que l'on est à la première image.

        If Me.position < 1 Then
          MsgBox("Aucune image précédente")
        Else
          Me.position = Me.position - 1
          Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
        End If
    

    Par contre, je ne sais pas comment faire dans l'autre cas, il faudrait pour cela soit compter le nombre de fichiers et se référencer à ça,
    soit connaitre la position de la dernière image.

    Si vous pouviez m'éclaircir sur ça.

     

    Cordialement.

    dimanche 16 janvier 2011 22:42
  • Bonjour,

    Attention, la variable position varie entre 0 et le (nombre de fichier - 1). Donc vous devez pour le bouton précédent :

     If Me.position = 0 Then
       MsgBox("Aucune image précédente")
      Else
       Me.position = Me.position - 1
       Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
      End If
    
    

    Et le bouton suivant :

    If Me.position = Me.images.Length - 1 Then
       MsgBox("Aucune image suivant")
      Else
       Me.position = Me.position + 1
       Me.PictureBox1.Image = Image.FromFile(Me.images(Me.position))
      End If
    
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse Crevette13 lundi 17 janvier 2011 10:37
    lundi 17 janvier 2011 09:07
    Modérateur
  • Merci mille fois, ce code marche à merveille.

     

    Cordialement.

    lundi 17 janvier 2011 10:37