Les instructions qui vont suivre nécessitent l'unité graph.
Pour créer des graphismes, il faut tout d'abord initialiser le mode graphique de la manière suivante
pour un écran VGA 640x480x16 :
Uses Graph ;
Var VGA, VGAHi : integer ;
BEGIN
InitGraph (VGA, VGAHi, ' c:\bp\bgi') ;
ATTENTION : le chemin du répertoire BGI peut changer d'une machine à l'autre. Par exemple, à la Doua, c'est : c:\turbo7\bgi.
Ici, la valeur VGA correspond au pilote graphique, VGAHi au mode graphique, on obtient en générale une
résolution de 640x480 pour 16 couleurs. Il est théoriquement nécessaire d'écrire la commande suivante :
closegraph ; en fin de programme afin de retourner en
mode texte, mais on peut s'en passer.
Pour une autodétection du mode graphique maximal admisible par le système si celui-ci est inférieur à : 640x480x16 qui est la résolution maximale de l'unité Graph de Turbo Pascal 7.0 (autodétection nécessaire pour les très vieux ordinateurs et aux examens...), initialisez de la manière suivante :
Uses Graph ;
Var Pilote, Mode : integer ;
BEGIN
Pilote := Detect ;
InitGraph(Pilote, Mode, ' c:\turbo7\bgi') ;
...
CloseGraph ;
| Nom | Valeur |
|---|---|
| CGA | 1 |
| EGA | 9 |
| VGA | 3 |
| Résolution | Valeur |
|---|---|
| 640x200 | 0 |
| 640x320 | 1 |
| 640x480 | 2 |
Ayez toujours en tête que la résolution de l'écran graphique, en Turbo Pascal, est au maximum de 640x480 pixels et de 16 couleurs (sans trifouillage).
A noter que l'origine de l'écran graphique se trouve en haut à gauche de l'écran, c'est-à-dire que le point de coordonnées (0,0) est le premier pixel de l'écran, ainsi le point à l'opposé qui est de coordonées (629, 479) se trouve en bas à droite.
Pour un affichage de meilleur résolution, fabriquez vous-même une unité spécifique (voir chapitre 14 sur les unités). Généralement, dans ce genre d'unité sensée permettre de faire plus que permis avec les unités de base, le code doit être en assembleur...
SetColor ( couleur ) ; Instruction qui permet de sélectionner une couleur (voir tableau ci-après) qui affectera toutes les commandes graphiques.
Il vous suffit d'entrer en paramètre le code ou alors le nom correspondant à la couleur de votre choix.
| Code | Nom | Couleur |
|---|---|---|
| 0 | Black | noir |
| 1 | Blue | bleu |
| 2 | Green | vert foncé |
| 3 | Cyan | cyan foncé |
| 4 | Red | rouge |
| 5 | Magenta | mauve foncé |
| 6 | Brown | marron |
| 7 | LightGray | gris clair |
| 8 | DarkGray | gris foncé |
| 9 | LightBlue | bleu flou |
| 10 | LightGreen | vert clair |
| 11 | LightCyan | cyan clair |
| 12 | LightRed | rouge clair |
| 13 | LightMagenta | mauve clair |
| 14 | Yellow | jaune |
| 15 | White | blanc |
SetFillStyle ( style, couleur ) ; Sélectionne un motif de remplissage spécifique (voir tableau ci-après) ainsi qu'une
couleur parmi 16. Ces paramètres ne seront utilisés que par quelques instructions dont celle qui suit (bar).
Il vous suffit d'entrer en paramètre le code ou alors le nom correspondant au motif de votre choix.
| Code | Nom | Rendu |
|---|---|---|
| 0 | EmptyFill | couleur du fond |
| 1 | SolidFill | couleur du tracé |
| 2 | LineFill | |
| 3 | LtSlashFill | |
| 4 | SlashFill | |
| 5 | BkSlashFill | |
| 6 | LtBkSlashFill | |
| 7 | HatchFill | |
| 8 | XHatchFill | |
| 9 | InterLeaveFill | |
| 10 | WideDotFill | |
| 11 | CloseDotFill | |
| 12 | UsesFill | motif défini par le programmeur |
FloodFill (x, y, border ) ; Rempli une surface fermée identifiée par sa couleur de bordure : border à partir du point de coordonnées
(x, y). La couleur de remplissage sera celle choisie par un SetColor ou un SetFillStyle.
Bar (x1, y1, x2, y2 ) ; Construit un rectangle plein aux coordonnées indiquées. L'axe des x étant croissant de gauche à droite et celui des y croissant de haut en bas.
Bar3d (x1, y1, x2, y2, z, TopOn ) ; Construit un parallépipède aux coordonnées indiquées et de profondeur z. L'axe des x étant croissant de gauche à droite et celui des y croissant de haut en bas. TopOn est une constante signifiant que les lignes de perspectives supérieures sont activées (pour les cacher : TopOff).
SetLineStyle ( style, $c3, épaisseur ) ; Sélectionne un style et une épaisseur de line utilisés par les instructions graphiques de base : line, rectangle, circle (seulement l'épaisseur).
Voir les tableaux suivant pour les valeurs possibles.
Il vous suffit d'entrer en paramètre le code ou alors le nom correspondant aux style et épaisseur de votre choix.
| Code | Nom | Description, rendu |
|---|---|---|
| 0 | SolidLn | ligne pleine![]() |
| 1 | DottedLn | ligne en pointillée![]() |
| 2 | CenterLn | ligne mixte![]() |
| 3 | DashedLn | ligne tiretée![]() |
| 4 | UseBitLn | motif défini par le programmeur![]() |
| Code | Nom | Description |
|---|---|---|
| 1 | NormWidth | trait normal![]() |
| 3 | ThickWidth | trait épais![]() |
Line (x1, y1, x2, y2) ; Construit une ligne débutant au point de coordonnées (x1, y1) et se terminant au point de coordonnées (x2, y2).
LineTo (x, y) ; Trace une ligne à partir de la position courante du curseur graphique,
jusqu'aux coordonnées x et y spécifiées.
LineRel (deltaX, deltaY) ; Trace une ligne à partir de la position courante du curseur graphique,
jusqu'aux coordonnées calculées à partir des pas de variation delatX et
deltaY spécifiés.
A noter qu'il peut y avoir équivalence entre diverses combinaisons des troix dernières instructions.
MoveTo (x, y) ; Positionne le pointeur graphique aux coordonnées X et Y
spécifiées.
MoveRel (deltaX, deltaY) ; Déplace relativement le pointeur graphique depuis sa position courante
jusqu'aux coordonnées calculées à partir des pas de variation deltaX et deltaY.
Rectangle (x1, y1, x2, y2) ; Construit un rectangle de coin haut-gauche de coordonnées (x1, y1) et de coin bas-droite de coordonnées (x2, y2).
Circle (x, y, rayon ) ; Construit un cercle de coordonnées et de rayon spécifiés.
Ellipse (x, y, angle1, angle2, axe1, axe2) ; Construit une ellipse de centre (x,y) de largeur axe1 et de hauteur axe2. On peut ne tracer qu'une partie de l'ellipse en spécifiant l'angle de départ angle1 et l'angle d'arrivé angle2 exprimés en degrés et dans le sens trigonométrique. Pour tracer une ellipse complète : angle1=0 et angle2=360.
Arc (x, y, angle1, angle2, rayon) ; Construit un arc de cercle de centre (x,y) et de rayon rayon. On peut tracer un arc en spécifiant l'angle de départ angle1 et l'angle d'arrivé angle2 exprimés en degrés et dans le sens trigonométrique. Pour tracer un arc maximum, c'est-à-dire un cercle : angle1=0 et angle2=360.
Program coquille ; mode
Uses Graph ;
Var r, a, , pilote : Integer ; mode
BEGIN
:= Detect ; mode
InitGraph(, pilote, 'c:\bp\bgi') ;
SetColor(14) ;
r := 0 ;
Inc(r, 8) ;
Arc(GetMaxX Div 3, GetMaxY Div 2, 0, r, 180-(r Div 2)) ;
Until r>360 ;
ReadLn ;
CloseGraph ;
END.
Ce programme coquille dessine à l'écran une série d'arcs de cercles incomplets afin de former la coquille d'un mollusque. Ce programme montre également comment il est simple d'introduire des fonctions et des opérateurs au sein d'une ligne de commande de procédure paramétrée (Arc();).
GetPixel (a, b) ; Fonction qui prend la valeur de la couleur du pixel aux coordonnées considérées.
PutPixel (a, b, couleur ) ; Instruction qui affiche un pixel de couleur choisie aux coordonnées spécifiées.
GetMaxY Fonction qui retourne la valeur de la résolution sur l'axe des x.
GetMaxY Fonction qui retourne la valeur de la résolution sur l'axe des y.
GetMaxColor Fonction qui retourne la valeur de la capacité de couleurs (le nombre total de couleurs).
GetMaxMode Fonction qui retourne la valeur du mode graphique.
SetTextStyle ( nom de la fonte ou code correspondant, orientation ou code correspondant, taille ) ; Définit les paramètres d'affichage du texte qui suivra (avec la commande suivante).
Il vous suffit d'entrer en paramètre le code ou alors le nom correspondant à la fonte et à l'orientation de votre choix.
Note :
Il est possible d'utiliser un très grand nombre de fontes supplémentaires sous la forme de fichiers au format
CHR qui doivent être placés dans le répertoire
/BIN de Turbo Pascal 7.0.
| Code | Nom, rendu |
|---|---|
| 0 | |
| 1 | |
| 2 | |
| 3 | |
| 4 |
| Code | Nom | Desciption |
|---|---|---|
| 0 | HorizDir | orientation horizontale |
| 1 | VertDir | orientation verticale |
OutText ( chaîne de caractères ) ; Instruction qui permet d'afficher du texte en mode graphique.
OutTextXY (x, y, chaîne de caractères ) ; Instruction qui permet d'afficher du texte aux coordonnées voulues.
OutTextXY (succ (getmaxx) div 2, succ (getmaxy) div 4, chaîne de caractères ) ; Instruction qui permet de centrer du texte au milieu de l'axe des x et au trois quart haut de l'axe des y.
ClearDevice ; Effacent le contenu de l'écran graphique.
ClearViewPort ;
CloseGraph ; Ferment l'écran graphique pour retourner à l'affichage MS-DOS habituel.
RestorCrtMode ;
SetGraphMode ( GetGraphMode ) ; Retourne au mode graphique de la procédure initialisation.