IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Affichage photo a partir vignette [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 71

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 304
    Par défaut Affichage photo a partir vignette
    Bonjour
    J'utilise un form pour afficher les vignettes d'un répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Imports System.IO
    Imports System.Drawing.Imaging
    Imports System.Text
     
     
    Public Class PhotoActeurs
        Private _ImageArrayList As ArrayList
        Private ipath As String = "c:\PhotoActeur"
     
        Private Sub PhotoActeurs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not BackgroundWorker1.IsBusy Then
                Me._ImageArrayList = New ArrayList()
                Me.BackgroundWorker1.RunWorkerAsync()
            End If
        End Sub
        Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
            Dim PictureFiles() As String = Directory.GetFiles(ipath, "B*.*", SearchOption.TopDirectoryOnly)
            Dim imageCount As Integer = 0
     
            For Each f In PictureFiles
                If isCorrectMIMEType(f, Imaging.ImageFormat.Jpeg) Then
                    _ImageArrayList.Add(f)
                End If
            Next
            If Not _ImageArrayList.Count = 0 Then
                imageCount = _ImageArrayList.Count
                Dim icount As Integer = 0
                For Each f In _ImageArrayList
                    icount += 1
                    Dim items() As String = New String(4) {}
                    Dim img As Image = Image.FromFile(f)
                    Dim txtActeur As String = Microsoft.VisualBasic.Mid(f, 16)
                    Dim LongueurActeur As Integer
                    LongueurActeur = Len(txtActeur)
                    f = Microsoft.VisualBasic.Left(txtActeur, LongueurActeur - 4)
                    items(0) = f
                    Dim w As Double = img.Width / 5
                    Dim h As Double = img.Height / 5
                    Dim lvi As New ListViewItem(items)
                    Dim thumbnail As Image = img.GetThumbnailImage(w, h, Nothing, IntPtr.Zero)
                    Dim progressPercent As Integer = icount / imageCount * 100
                    Dim objList As Object = New Object() {lvi, thumbnail, progressPercent}
                    If Me.InvokeRequired Then
                        Me.Invoke(New UpdateListViewSubItemDelegate(AddressOf Me.updateprogress), objList)
                    End If
                Next
            End If
        End Sub
        Private Delegate Sub UpdateListViewSubItemDelegate(ByVal listObj As Object)
        Private Sub updateprogress(ByVal listObj As Object)
            Try
                Dim lvi As ListViewItem = TryCast(listObj(0), ListViewItem)
                Dim Img As Image = TryCast(listObj(1), Image)
                If Not Img Is Nothing Then
                    Me.ImgLst.Images.Add(Img)
                    lvi.ImageIndex = Me.ImgLst.Images.Count - 1
                End If
                Me.LstvItem.Items.AddRange(New ListViewItem() {lvi})
                If Not listObj(2) > 100 Then
                    ProgressBar1.Value = listObj(2)
                End If
            Catch ex As Exception
            End Try
        End Sub
        Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
            MsgBox("Chargement terminé !", MsgBoxStyle.Information, "Collection de DVD")
            ProgressBar1.Visible = False
        End Sub
     
    End Class
    Je désire en cliquant sur une vignette afficher la photo en grand dans une picturebox se trouvant sur le même formulaire
    Pouvez-vous m'aider ?
    merci

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 71

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 304
    Par défaut
    Bonsoir
    Ne cherchez plus j'ai la solution , en fait je me plantait dans les index de la listview
    Voici le code final

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub lstvItem_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LstvItem.MouseDoubleClick
            Dim s As String = LstvItem.SelectedItems(0).SubItems(0).Text
            TxtImage.Text = s
            Photo.Image = Image.FromFile("C:\PhotoActeur\" & TxtImage.Text & ".jpg")
        End Sub
    Merci quand même

  3. #3
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir Jean-Luc,

    Préfères utiliser le gestionnaire d'évènement "ItemSelectionChanged" de ton Listview pour parcourir les items :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Private Sub LstvItem_ItemSelectionChanged(ByVal sender As System.Object, ByVal e As ListViewItemSelectionChangedEventArgs) Handles LstvItem.ItemSelectionChanged
            If e.IsSelected Then
                 Photo.Image = Image.FromFile("C:\PhotoActeur\" & e.Item.Text & ".jpg")
            Else
                 Photo.Image = Nothing
            End If
        End Sub
    ATTENTION : Image.fromFile est une méthode très périlleuse car lorsque le handle a été créé il reste ouvert et ne peut être libéré donc lors de la réutilisation du même fichier ultérieurement (exemple si tu comptes le supprimer) ça risques de générer une exception dans ton application !

    Préfères utiliser ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim Img as FileStream = New FileStream("C:\PhotoActeur\" & e.Item.Text & ".jpg", FileMode.Open)
    Photo.Image = Image.FromStream(Img)
    Img.Close()

    A+

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 71

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 304
    Par défaut
    Bonjour Wallace
    Comme d'habitude tes conseils me sont très utiles
    J'ai aussi suivi les cours de Ph Lasserre concernant les graphiques et je dois dire que je parviens à faire de jolis graphiques à partir de requête SOL
    Comme nous ne sommes que le 26/01/2014 j'en profite pour te présenter mes meilleurs vœux pour l'année 2014
    A + car je suppose que notre collaboration ne s'arrêtera pas là .....

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour Jean-Luc,

    Je te souhaite egalement tout mes voeux pour cette nouvelle année auxquels j'associe ta famille et tes proches.

    On se recroisera certainement car comme on dit dans ma région : il n'y a que les montagnes qui ne se rencontrent pas

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD16] Lenteur affichage photos JPEG, pb liste image avc vignette jpg
    Par jmbegue dans le forum WinDev
    Réponses: 4
    Dernier message: 30/04/2014, 20h09
  2. [Configuration] probleme avec affichage photo
    Par arti2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 17/06/2006, 23h23
  3. Affichage photo répertoire
    Par le69 dans le forum Langage
    Réponses: 11
    Dernier message: 19/04/2006, 20h40
  4. Affichage de rencontre à partir d'une base
    Par leloup84 dans le forum Requêtes
    Réponses: 7
    Dernier message: 30/01/2006, 16h34
  5. [FLASH 8] Pbm affichage photos
    Par fab22montpellier dans le forum Flash
    Réponses: 1
    Dernier message: 30/11/2005, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo