Section courante

A propos

Section administrative du site

Les graphiques

La bibliothèque AMIGA "graphic.library" est responsable de tout ce qui concerne le graphisme. Il est déclaré avec les types de données associés et leur variable de base "GfxBase" dans le fichier d'inclusion "graphics.lib". Nous souhaitons nous limiter ici aux procédures et fonctions les plus importantes.

La bibliothèque graphique doit d'abord être ouverte :

  1. OpenLib(GfxBase,'graphics.library',0); 

La plupart des commandes graphiques font référence au port Rast de la fenêtre de sortie, que nous connaissons déjà :

ClearScreen(Rast:Ptr);

Supprime la fenêtre vers laquelle pointe le port snap "Rast".

Move(Rast:Ptr;x,y:Integer)

Définit le curseur graphique à la position spécifiée.

Draw(Rast:Ptr;x,y:Integer)

Dessine une ligne depuis la position du curseur dans la couleur de premier plan actuelle jusqu'à l'emplacement spécifié.

SetAPen(Rast:Ptr;col:Integer)

Détermine la couleur actuelle du premier plan. Cela s'applique à la plupart des fonctions graphiques, par exemple aussi pour «Draw».

SetBPen(Rast:Ptr;col:Integer)

Définit la couleur d'arrière-plan (par exemple pour la sortie de texte).

SetDrMd(Rast:Ptr;mode:Integer);

Définit le mode de sortie, par exemple, 1 pour "normal", 3 pour une sortie inversée (la sortie et le contenu de la fenêtre sont XOR), 4 pour une sortie inverse (n'a de sens que pour la sortie texte).

GfxText(Rast:Ptr;s:Str;count:Integer):Boolean;

Affiche le texte du paramètre s à partir de la position du curseur. Dans ce cas, la chaîne de caractères ne doit pas nécessairement se terminer par un octet nul comme d'habitude, mais la longueur à afficher est passée comme troisième paramètre.

Le drapeau renvoyé par cette fonction indique si une erreur s'est produite. D'ailleurs, cette fonction s'appelle simplement «Text», mais c'est déjà le nom d'un type de données PASCAL, alors elle a été renommé GfxText par Kick-Pascal.

RectFill(Rast:Ptr;minX,minY,maxX,maxY:Integer);

Cette procédure permet de remplir un rectangle avec la couleur de premier plan.

WritePixel(Rast:Ptr;x,y:Integer)

Ce procédure permet de définir un seul point.

Il existe de nombreuses autres commandes graphiques, mais celles-ci suffiront pour l'instant.

Un programme de démonstration pour ces fonctions :

  1. Program Grafik;
  2. {$incl "graphics.lib", "intuition/intuition.h"}
  3. Var
  4.  Win:^Window;
  5.  Rp:^RastPort;
  6.  Err:Boolean;
  7.  Msg:Ptr;
  8.  I:Integer;
  9. BEGIN
  10.  OpenLib(GfxBase,'graphics.library',0);
  11.  Win:=Open_Window(0,0,640,200,1,_CLOSEWINDOW,GIMMEZEROZERO+ACTIVATE+WINDOWCLOSE+WINDOWDRAG+WINDOWDEPTH,
  12.                   'Grafikdemo',Nil,640,200,640,200);
  13.  Rp:=Win^.RPort;
  14.  Move(Rp,5,40);
  15.  SetAPen(Rp,1);
  16.  SetBPen(Rp,3);
  17.  SetDrMd(Rp,1);
  18.  Err:=GfxText(Rp,'Ceci est une démo graphique. ######',28);
  19.  SetAPen(Rp,3);
  20.  For I:=0 to 20 do Begin
  21.   Move(Rp,220+20*I,5);
  22.   Draw(Rp,620,5+9*I)
  23.  End;
  24.  For I:=1 to 10 do Begin
  25.   SetAPEn(Rp,1+I mod J);
  26.   RectFill(Rp,5*I,75*2*I,320-25-I,180-8*I)
  27.  End;
  28.  Msg:=Wait_Port(Win^.UserPort);
  29.  Msg:=Get_Msg(Win^.Userport);
  30.  Replay_Msg(Msg);
  31.  Close_Window(Win);
  32. END.

Une autre fonction doit être mentionnée ici :

SetRGB4

Bien sûr, à la longue, il devient ennuyeux de toujours travailler avec les couleurs d'écran standard. Avec «SetRGB4», vous pouvez modifier la palette de couleurs sur vos propres écrans. Pour ce faire, vous avez besoin d'un pointeur vers le "ViewPort" de l'écran, étant un champ (c'est-à-dire pas un pointeur !) de la structure de l'écran. Si «Scr» est le descripteur d'écran, alors le code ressemble à ceci :

  1. SetRGB4(^Scr^.ViewPort,Number,R,G,B);

Signification des autres paramètres : "Number" est le numéro de la couleur à changer. Pour un écran à trois plans de bits, par exemple : B. Les valeurs de 0 à 7 ont du sens. "R", G" et "B" indiquent les composantes de couleur rouge, bleue et verte de la couleur souhaitée. Chaque composante est un nombre de 0 bit 15.

Exemple :

  1. { ... }
  2. SetRGB4(Vp,0,15,15,15); { Fond : blanc }
  3. SetRGB4(Vp,1, 0, 0, 6); { Couleur 1 : Bleu foncé }
  4. SetRGB4(Vp,2,15,11,11); { Couleur 2 : Rose }
  5. SetRGB4(Vp,3, 0, 0, 0); { Couleur 3 : Noir }


Dernière mise à jour : Mercredi, le 17 juillet 2024