Picture

Classe de WindowTools permettant l'affichage d'images.

Version: 1.1
Date: Le 6 août 1997
Rédaction: Jocelyn Houle
Direction: Jean Vaucher


Introduction

WindowTools permet d'afficher quelques d'images des formats les plus répandus. Vous pouvez ainsi afficher des BMP (format Windows ou OS/2), des GIF (Graphics Interchange Format), des PCX (format PC), des PICT (format Macintosh), des TGA (ou Targa) ainsi que les deux formats UNIX les plus répandus, soient XBM (bitmap, donc en noir et blanc) et XPM (pixmap, qui peut donc être en couleur). Toutefois, WindowTools ne permet pas encore d'afficher des JPEG, mais l'application XView (dont la commande est xv) vous permettra de sauvegarder sous un autre format un JPEG que vous voudriez afficher.

Les Pictures sont utilisées pour tous les formats d'images énumérés ci-haut et WindowTools se charge de savoir de quel format il s'agit. Il faut toutefois que le nom du fichier se termine par une extension adéquate (i.e. GIF, TGA, PCX, etc.). La casse n'est pas importante.

Le programme qui suit montre un exemple d'affichage de Pictures.

 

Code

BEGIN
   EXTERNAL CLASS WindowTools;

   INSPECT NEW MainWindow("Pictures") DO BEGIN
      REF(Button) Ok;
      REF(Picture) Tiger, Signature;

      Tiger :- GetPicture("tiger.gif");
      Signature :- GetPicture("JH.xbm");
      
      SetSize(300, 300);
      Ok :- MakeButton("Ok").PlaceDownRight;
      Show;
      
      DrawPicture(Tiger, 0, 0);
      Ok.Wait;
      
      DrawPicture(Signature, 20, 200);
      Ok.Wait;
   END;
END;

On a chargé les images en mémoire grâce à la fonction GetPicture qui demande qu'on spécifie le nom du fichier à lire.

Ensuite, on utilise l'appel DrawPicture où l'on spécifie la Picture à afficher, ainsi que sa position dans la fenêtre courante.


Informations sur les Pictures

On charge une Picture à l'aide de la fonction suivante:
ref(Picture) procedure GetPicture(Filename); text Filename;
Charge en mémoire la Picture dont l'emplacement sur le réseau est spécfié par Filename.

Pour afficher l'image dans une fenêtre, il faut appeler la procédure:
procedure DrawPicture(Pict, X, Y); ref(Picture) Pict; integer X, Y;
Dessine la Picture Pict avec son coin supérieur gauche à la position (x, y) dans la fenêtre courante.

Mais il peut arriver que vous ne vouliez afficher qu'une partie d'image. Pour ce, il existe la fonction Portion:
ref(Picture) procedure Portion(X, Y, Width, Height); ref(Picture) Pict; integer X, Y, Width, Height;
Définit une zone rectangulaire ou (x, y) est le coin supérieur gauche et dont la largeur est width et la hauteur est height.
Note: Cette fonction est incluse dans la classe Picture et doit donc être appelée par notation pointée d'une Picture.
    ref(Picture) MyPict;
    MyPict :- GetPicture("Image.xbm");
    MyPict.Portion(10, 10, 30, 30);

Il existe finalement deux variables qui peuvent s'avérer utiles. Il s'agit de width et height, qui correspondent respectivement à la largeur et à la hauteur de l'image en pixels. Ainsi, suivant le dernier exemple, l'appel MyPict.Width retournerait la largeur de l'image.


Notes

WindowTools n'utilise en faits que 2 formats: les XBM et les XPM. Pour supporter les autres formats, WindowTools convertit l'image en XPM pour pouvoir l'utiliser. Ceci entraîne toutefois un délai, puisqu'il doit convertir l'image. Pour des raisons d'optimisation, il est recommandé de charger toutes les images lors de l'initialisation.


Exemples de programmes

[Retour à l'index de WindowTools...]