Site:  Cours VB.net  
3.14 Image.

Comment afficher des images ?

Le contrôle 'PictureBox':

Le contrôle PictureBox  sert à afficher des graphismes au format bitmap, GIF, JPEG, métafichier ou icône (Extension .BMP  .GIF  .JPG  .WMF  .ICO)

L'image à affichée est déterminée par la propriété Image, laquelle peut être définie au moment de l'exécution ou du design. La propriété SizeMode détermine la façon dont l'image et le contrôle se dimensionnent l'un par rapport à l'autre.

 

On peut charger une image en mode conception par le fenêtre 'propriétés' et la propriété 'Image' ou dans le code:

PictureBox1.Image = Image.FromFile("vimage.gif")

(la Classe Image (Shared) possède une fonction qui retourne une image à partir d'un fichier. On l'affecte ensuite à la propriété Image du PictureBox1.)

Ho! merveille, les GIF animés sont acceptés et s'animent sous VB.

 

Comment effacer une image?

If Not (PictureBox1.Image Is Nothing) Then
    PictureBox1.Image.Dispose()
    PictureBox1.Image = Nothing
End If

 

Les objets de la Classe Image ont comme d'habitude des propriétés et des méthodes.

La méthode RotateFlip permet par exemple d'effectuer une rotation de l'image; quand on tape le code, VB donne automatiquement la liste des paramètres possible.

PictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipX)

La méthode Save sauvegarde  l'image dans un fichier.

PictureBox1.Image.Save("c:\image.bmp")

Bien Noter que le nom de l'extension suffit à imposer le format de l'image sur le disque.

On peut charger une image .GIF puis la sauvegarder en  .BMP

Il y a bien d'autres propriétés gérant les dimensions, la palette de l'image.

 

Il est possible de définir une couleur comme 'transparente': voir le page sur les boutons.

 

Charger une image à partir d'un fichier, mais sans 'bloquer' ce fichier.

On a vu qu'on peut 'charger' une image par  PictureBox1.Image = Image.FromFile("vimage.gif")

L'inconvénient de cette méthode est que tant que le programme est ouvert, le fichier correspondant sur le disque est utilisé et par conséquence il est impossible de travailler dessus. (Impossible d'effacer le fichier par exemple!!)

Une méthode pour libérer le fichier est d'utiliser un Stream (Merci la Faq de Developpez.com)

'En haut du module

Imports System.IO

' Créer le FileStream sur le fichier vimage.gif

Dim MyStream As FileStream = New FileStream("C:\vimage.gif”, FileMode.Open)

 ' affecter l'image à pictureBox1 

pictureBox1.Image = Image.FromStream(MyStream) 

' libérer les ressources 

MyStream.Close 

' supprimer le fichier vimage.gif

 File.Delete("C:\vimage.gif”)

 

Comment placer l'image dans le PictureBox?

 

La propriété SizeMode impose comment l'image sera placée dans le contrôle PictureBox: 

 

 

La propriété 'Image' des contrôles:

De nombreux contrôles Windows Forms peuvent afficher des images. L'image affichée peut être une icône symbolisant la fonction du contrôle ou une image ; par exemple, l'image d'une disquette sur un bouton indique généralement une commande d'enregistrement. L'icône peut également être une image d'arrière-plan conférant au contrôle une certaine apparence.

Pour tous les contrôles affichant des images:

 

Exemple pour un bouton:

button1.Image = Image.FromFile("C:\Graphics\MyBitmap.bmp")
' Aligne l'image.
button1.ImageAlign = ContentAlignment.MiddleRight
 

Exemple pour un label:

Dim Label1 As New Label()
Dim Image1 As Image


Image1 = Image.FromFile("c:\\MyImage.bmp")

' modifier la taille du label pour qu'il affiche l'image.

Label1.Size = Image1.Size

' Mettre l'image dans le label.

Label1.Image = Image1
 

Si on renseigne la propriété Image, on ne peut pas utiliser en même temps la propriété ImageList décrite ci-dessous.

 

Le contrôle ImageList:

Il sert de containeur à images, c'est une collection d'images. les images qu'il contient seront utilisées par d'autres contrôles (PictureBox, Listview, TreeView, Button....)

Il n'est pas visible en exécution.

 

En conception il apparaît en bas sous la fenêtre. A droite figurent ses propriétés, en particulier, la collection Images qui contient les images et la propriété TransparentColor qui indique la couleur qui doit être transparent, c'est à dire non visible.

 

Il faut l'ajouter au formulaire, il apparaît en dessous.

 

 

Si je clique sur le bouton '...' en face de Images, l'éditeur de collections d'image s'ouvre.

 

On peut ajouter des images avec le bouton 'Ajouter'.

L'ImageList est ainsi chargé.

 

Ensuite  pour utiliser une image de l'ImageList dans un autre contrôle, il faut modifier les propriétés de cet autre contrôle( un bouton par exemple):

La propriété ImageList  du bouton  doit contenir le nom du contrôle imageList et  ImageIndex du bouton doit contenir l'index de l'image dans l'ImageList.

btOk.ImageList = imagelist1

btOk.ImageIndex = 2

 

Un ImageList peut aussi être chargé par code:

imageList1.Images.Add(Image.FromFile(NomImage))
On ajoute à la collection Images une image venant d'un fichier nommé NomImage.

On peut surcharger la méthode Add en fournissant en plus la couleur transparente.

imageList1.Images.Add(Image.FromFile(imageToLoad), CouleurTransparente)
 

La taille des images peut aussi être modifiée par code:

imageList1.ImageSize = New Size(255, 255)
imageList1.TransparentColor = Color.White