Si vous débutez, et que vous désirez apprendre à effectuer quelques tracés sans grande prétention, alors la BGI (Borland Graphics Interface) est faite pour vous ! La BGI est le système graphique fourni avec Turbo Pascal. Capable de fonctionner avec de vieux systèmes, on retiendra surtout la possibilité de pouvoir effectuer des tracés dans un mode 640x480 en 16 couleurs (VGA), et ce de manière aisée.
Pour vous servir de la BGI, vous devez d'une part utiliser l'unité Graph, et d'autre part avoir à disposition les pilotes de la BGI. En règle générale, seul EGAVGA.BGI suffit. A ceci vous devrez ajouter les éventuelles polices de caractères si vous désirez écrire du texte à l'écran. Chaque police porte l'extension .CHR. Rassurez-vous toutefois : tous ces fichiers sont fournis avec Turbo Pascal et doivent avoir été installés avec le reste. Ils se trouvent dans le répertoire \TP7\BGI.
Pour initialiser un mode graphique, il faut vous servir de InitGraph(var GraphDriver, GraphMode: Integer; Path: string).
GraphDriver et GraphMode sont des variables qu'il faut déclarer. Elles vont caractériser le mode graphique utilisé. La plupart du temps, on laissera Turbo Pascal détecter tout seul le mode graphique le plus adapté à votre configuration. Pour cela, il suffit d'affecter la valeur Detect à GraphDriver, sans toucher à GraphMode :
var
GraphDriver, GraphMode: Integer;
begin
GraphDriver := Detect;
...
Dans certains cas, il peut être intéressant de spécifier soi-même quel mode graphique utiliser. Dans ce cas, il faudra définir à la fois GraphDriver et GraphMode :
var
GraphDriver, GraphMode: Integer;
begin
GraphDriver := VGA;
GraphMode := VGAHi;
...
Différentes valeurs sont possibles. Je ne listerai ici que les valeurs pour le pilote VGA, les autres étant tombés en désuétude totale.
GraphDriver
|
GraphMode
|
Résolution
|
0 - Detect |
Non défini |
Meilleure possible |
9 - VGA |
0 - VGALo
1 - VGAMed
2 - VGAHi
|
640x200
640x350
640x480
|
Une fois ces variables définies, il ne reste plus qu'à appeler InitGraph, en indiquant le chemin d'accès au driver BGI (\TP7\BGI la plupart du temps).
Il y a néanmoins un élément à prendre en compte : il se peut que l'initialisation du mode graphique échoue (vous avez indiqué un répertoire erroné, vous manquez de mémoire, le pilote choisi n'est pas compatible, etc...). Vous devez donc vérifier que tout s'est bien déroulé comme prévu à l'aide de la fonction GraphResult, qui renvoie le dernier code d'erreur reçu par le système graphique. S'il n'y a pas eu d'erreur, alors vous recevrez le code grOk.
Pour plus d'information, vous pouvez aussi faire appel à la fonction GraphErrorMsg, qui renverra le message d'erreur associé à un code d'erreur donné.
Vous n'oublierez pas, après avoir fini de travailler avec le mode graphique, de faire appel à CloseGraph, qui permet de retrouver le mode texte précédent.
D'où le résultat final :
uses
Graph;
var
Gd, Gm: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, 'C:\TP7\BGI');
if GraphResult <> grOk then
begin
WriteLn(GraphErrorMsg(GraphResult);
WriteLn;
Halt;
end;
...
CloseGraph;
end.
Remarque :
-
Certaines personnes ne sauront se contenter d'une résolution de 640x480 en 16 couleurs. Il existe alors un autre type de gestion graphique : les modes
VESA.
Ces modes permettent d'atteindre une résolution de 1600x1200 en millions de couleurs, en fonction de la carte graphique installée.
Turbo Pascal ne sachant pas les gérer nativement, il vous faudra soit créer votre propre unité de gestion (la documentation est disponible sous format PDF), soit utiliser une unité faite par un autre utilisateur.
Je vous propose ainsi ma propre unité, VBE2, qui permet d'utiliser le même type de programmation qu'avec la BGI. La compatibilité est quasi parfaite, et vous pourrez convertir vos vieux programmes en 16 couleurs en un rien de temps !
|