Valider les acquis
Un album photo
Cette section intéressera les possesseurs d’appareils photos numériques et plus largement tous ceux dont les précieux moments de la vie ont été numérisés sous forme de fichiers image. Si vous avez déjà connecté votre appareil photo à votre ordinateur, vous avez pu remarquer que le format des photos était généralement JPG. Il produit des documents de taille réduite, ce qui facilite leur exploitation. Vous allez donc réaliser un album photo numérique qui proposera quelques fonctions simples de manipulation et de copie des images dans un dossier. Le contrôle ListView Lancez Visual Basic et créez un nouveau projet que vous appellerez Album Photo (voir Figure 10.1). 1 Dans le designer de formulaires, ouvrez la boîte à outils et ajoutez au formulaire principal un contrôle ListView.
Valider les acquis Listview
La ListView permet, un peu à la manière du contrôle TreeView vu précédemment, d’afficher une collection d’objets. Pour le moment la ListView ressemble à un rectangle blanc. C’est normal. Ancrez-la à gauche du formulaire de manière qu’elle prenne toute la hauteur du formulaire. 2 Utilisez la propriété Dock en mettant la valeur à Left, de sorte que la ListView occupe la gauche du formulaire. Ajoutez au formulaire un contrôle de type FolderBrowser en le faisant glisser depuis la boîte à outils. Vous allez utiliser ce contrôle pour qu’au chargement de l’application, il vous soit demandé où sont stockées les photos à afficher. 4 Ajoutez une PictureBox au formulaire. Elle servira à visualiser les images sélectionnées. 5 Une fois la PictureBox ajoutée, double-cliquez sur la barre de titre du formulaire, pour vous placer dans l’éditeur de code à l’endroit de l’événement correspondant au chargement du formulaire. Avant d’entrer les instructions, prenez quelques minutes pour réfléchir à ce que vous faites. De quoi avez-vous besoin ? Une fois que l’utilisateur a choisi le dossier contenant ses images, que faut-il faire ? Il faut commencer par vérifier le type des fichiers. Pour cela, vous allez récupérer, pour chaque fichier présent dans le répertoire de l’utilisateur, son extension, et vous assurer qu’il s’agit d’un fichier JPG. Cette réflexion conduit au code suivant : If FolderBrowserDialog1.ShowDialog = _ Windows.Forms.DialogResult.OK Then For Each fichier As _ String In _ System.IO.Directory.GetFiles( _ FolderBrowserDialog1.SelectedPath) If System.IO.Path.GetExtension(fichier) = « .jpg » Then La première ligne correspond au test. Est-ce que l’utilisateur a bien cliqué sur le bouton OK pour valider le choix de son répertoire ? Si oui, vous utilisez une boucle de type For Each pour vérifier chaque fichier contenu dans le dossier accessible via le chemin donné par l’utilisateur. La vérification se fait à l’aide de la méthode GetFiles de l’espace de noms System.IO.Directory, qui est un ensemble de méthodes et de fonctions destinées à faciliter la manipulation des fichiers et dossiers. La propriété FolderBroserDialog.SelectedPath renvoie le chemin complet du dossier sélectionné, sous forme de chaîne de caractères. En la passant en paramètre de la méthode GetFiles, vous recevez un tableau de chaînes de caractères dont chaque entrée correspond à un fichier du répertoire.
Le contrôle ImageList
La bonne méthode consiste à utiliser le contrôle ImageList. ImageList Une ImageList est un contrôle qui permet de constituer une liste d’images. Vous pouvez utiliser cette liste avec d’autres contrôles contenant des collections d’éléments pour mettre en relation un objet et une image de la liste. Cette mise en relation est faite par un index qui caractérise la position de l’image dans la liste. Les images de la liste constituant une collection, l’index du premier élément est 0. Comme les éléments que vous ajoutez dans la ListView possèdent également un index, il suffit de synchroniser les ajouts dans la ListView et dans l’ImageList pour qu’un élément ait le même index dans les deux collections. Passons à la pratique. 1 Commencez par ajouter au formulaire un contrôle ImageList. Retournez au code de chargement de l’application en double-cliquant sur la barre de titre dans le designer de formulaires et remplacez le code par le suivant : If FolderBrowserDialog1.ShowDialog = Windows.Forms ✂ .DialogResult.OK Then For Each fichier As String In System.IO.Directory ✂ .GetFiles(FolderBrowserDialog1.SelectedPath) If System.IO.Path.GetExtension(fichier) = « .jpg » Then Dim MonImage As ListViewItem = ListView1.Items ✂ .Add(fichier) MonImage.Name = fichier MonImage.Text = System.IO.Path ✂ .GetFileNameWithoutExtension(fichier) ImageList1.Images.Add(Image.FromFile(fichier)) MonImage.ImageIndex = MonImage.Index End If Next End If Les deux nouvelles instructions nécessaires à la synchronisation de l’image et de son aperçu sont les deux dernières lignes de la boucle For Each. ImageList1.Images.Add(Image.FromFile(fichier)) MonImage.ImageIndex = MonImage.Index Valider les acquis La première ajoute une image à l’ImageList en utilisant la méthode FromFile de l’objet Image. Ce dernier est fourni par le Framework .NET 2.0, qui permet la manipulation d’images, ou encore comme ici, le chargement d’une image à partir du chemin d’un fichier. La deuxième donne à l’image dans la ListView un ImageIndex, qui est un nombre entier représentant l’image à utiliser dans l’ImageList. Dans ce cas, l’image est ajoutée simultanément dans l’ImageList et dans la ListView, l’index est donc le même. C’est pourquoi vous associez le numéro d’index MonImage.Index à la propriété ImageIndex. Une question se pose alors. Si vous pouvez ajouter une image dans la ListView, pourquoi garder la PictureBox sur le formulaire ? Simplement parce que l’ImageList n’est faite que pour afficher des miniatures. La PictureBox dispose de contrôles plus appropriés à l’affichage d’images. 2 Revenez au designer de formulaires et sélectionnez la ListView. 3 Affichez la fenêtre des propriétés et cherchez la propriété nommée LargeImageList. 4 Cliquez sur le menu déroulant à droite et choisissez ImageList1, qui représente la liste.