Le composant image permet d'afficher une image provenant d'un fichier. La plupart des formats images courants (jpg, gif, bmp, etc ..) sont acceptés. Vous le trouverez sous l'onglet Additionnal:
L'image elle même est contenue dans l'attribut Picture (classe TPicture) du composant. La méthode LoadFromFile permet de charger une image dans un objet de cette classe. D'autre part, lorsqu'une image est chargée dans l'attribut Picture d'un composant image, elle est immédiatement affichée.
Par exemple, l'instruction suivante:
Image1.Picture.LoadFromFile('Toto.jpg')
charge le fichier image 'Toto.jpg' dans le composant image Image1 (ou plus exactement dans son attribut Picture), ce qui a pour effet de l'afficher à l'écran.
Pour l'effacer, on utilisera la méthode Clear de la classe TPicture. En effet, cette méthode supprime l'image chargée dans un objet de cette classe. Si on l'applique à l'attribut Picture d'un composant image, l'image affichée sur ce dernier sera immédiatement effacée.
Par exemple, l'instruction:
Image1.Picture.Clear();
efface l'image affichée dans le composant Image1.
Pour bien comprendre les explications qui suivent, il faut avoir à l'esprit que les dimensions d'un composant image (en pixels) ne coincident généralement pas avec les dimensions de l'image contenues dans un fichier.
La manière dont une image sera affichée à l'intérieur d'un composant image dépend essentiellement des attributs Stretch, Proportional et Center. Ces trois attributs sont tous des booléens.
Si Stretch vaut true, l'image est agrandie ou rapetissée de manière à remplir le composant image en hauteur ou en largeur. L'effet de Stretch dépend de la valeur de l'attribut Proportional:
L'attribut Center définit le centrage de l'image. Par défaut Center = false et l'image n'est pas centrée. Son coin supérieur gauche correspond alors au coin supérieur gauche du composant image. Par contre, si Center vaut true, le centre du composant image coincidera avec le centre de l'image.
L'exemple présenté ici se trouve dans le dossier Exemple-ProgObjet1/Image. Ouvrez le fichier Visualisateur.lpi. Il s'agit d'une application très simple permettant d'afficher une image.
La fenêtre de l'application comprend une barre de menu et un composant image.
Pour charger une image, utilisez l'entrée Ouvrir du menu fichier. Elle vous permettra de sélectionner un fichier image à l'aide d'une boite de dialogue d'ouverture d'image.
Des exemples d'images se trouvent dans le répertoire Exemple-ProgObjet1/Oiseaux.
Vous pouvez ensuite vous amusez à modifier les attributs Stretch, Proportional ou Center du composant image via le menu Option.
Voici par exemple l'affichage de l'image de la cigogne avec Stretch = true et Proportional = False:
et la même image avec Stretch = true et Proportional = true:
L'entrée Ouvrir du menu fichier active la procédure évènementielle suivante:
procedure TForm1.MN_OuvrirClick(Sender: TObject); var nfi : string; begin if OpenPictureDialog1.execute() then begin nfi := OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile(nfi); end; end;
OpenPictureDialog1 est la boite de dialogue d'ouverture d'image. Si l'utilisateur a sélectionné une image, le nom du fichier image est affecté à la variable nfi, puis chargé dans le composant image Image1, ce qui a pour effet de l'afficher.
Le composant liste de fichiers vous permettra d'afficher les fichiers contenus dans un répertoire et eventuellement d'effectuer un traitement sur ces fichiers. Vous le trouverez sous l'onglet Misc:
La classe TFileListBox représentant ce composant est une sous-classe de TListBox (zone de listes), si bien que tous les attributs et méthodes des zones de listes peuvent être utilisées avec les listes de fichiers.
Le chemin du répertoire associé au composant est mémorisé dans l'attribut Directory.
La liste des fichiers est initialisé au démarrage de l'application. Si l'utilisateur modifie le contenu du répertoire pendant son exécution, la liste des fichiers affichés dans le composant ne sera pas automatiquement réactualisée. Pour la réactualiser, il faut lui appliquer la méthode UpdateFileList.
L'exemple présenté ici (répertoire Exemple-ProgObjet1 /ListeDeFichiers) est une nouvelle version du visualisateur d'image avec un composant liste de fichier permettant de sélectionner l'image à afficher:
On accède à une image en cliquant sur son nom. Les touches de votre clavier représentant des flèches vers le haut ou le bas vous permettrons de vous déplacer dans la liste (remarquez que ces touches fonctionnent également dans une zone de liste standard).
Le bouton Rafraichir permet de réactualiser la liste des fichiers au cas où elle aurait été modifié pendant l'exécution du programme.
Un clic sur un élément de la liste de fichier (ou un déplacement dans la liste via les "touches flèche") provoque l'exécution de la procédure évènementielle suivante:
procedure TForm1.FileListBox1Click(Sender: TObject); var nom_fichier : string; begin nom_fichier:=FileListBox1.Directory+'\'+ FileListBox1.GetSelectedText; Image1.Picture.LoadFromFile(nom_fichier); end;
FileListBox1 est le composant liste de fichiers de l'application. La première instruction récupère le nom du fichier grâce à la méthode GetSelectedText des zones de liste. Ce nom est concaténé avec le chemin du répertoire mémorisé dans l'attribut Directory du composant et affecté à la variable nom_fichier.
La deuxième instruction charge l'image dans le composant image Image1.
Enfin, voici le code de la procédure évènementielle associé au bouton rafraichir:
procedure TForm1.BT_Rafraichir_ListeClick(Sender: TObject); begin FileListBox1.UpdateFileList; end;