Accueil > Turbo Pascal > Turbo Pascal – L’unité Graph et le texte

Turbo Pascal – L’unité Graph et le texte

This entry is part 20 of 24 in the series Turbo Pascal - Tutoriel
  1. Ecrire
  2. Changement de style d’écriture
  3. Taille des caractères
  4. Justification
  5. Retrouver les parametres

Vous aurez certainement remarqué que le texte écrit par les méthodes standards comme write ou
writeln n’est pas des plus présentable.
L’unité Graph permet de remedier à ce détail de mise en forme et de pouvoir utiliser plusieurs
style de polices.

Pour utiliser ces fonctions et procédures, il faut initialiser le système pour le mode graphique, comme précisé
à la page précédente.
Petit rappel :

uses graph;

varPilote : Integer;
Mode : Integer;

begin
Pilote := Detect;
InitGraph(Pilote, Mode, 'c:\outils\tp\bgi');
CloseGraph;
end.

Ecrire

Ensuite, pour écrire, on utilise la procédure OutText, qui ne prend qu’un seul argument : la chaîne
de caractères à afficher :

uses graph;

varPilote : Integer;
Mode : Integer;

begin
Pilote := Detect;
InitGraph(Pilote, Mode, 'c:\outils\tp\bgi');
OutText('Hello! It''s me!');{Affiche Hello! It's me! à l'écran}
CloseGraph;
end.

Une alternative à OutText est OutTextXY. OutTextXY prend 2 arguments supplémentaires
qui sont les coordonnées X et Y de l’endroit où afficher la chaîne de caractères.
Ainsi :

uses graph;

varPilote : Integer;
Mode : Integer;

begin
Pilote := Detect;
InitGraph(Pilote, Mode, 'c:\outils\tp\bgi');
OutTextXY(100, 200, 'Hello! It''s me!');{X = 100, Y = 200}
CloseGraph;
end.

Changement de style d’écriture

Pour changer de style d’écriture, c’est à dire changer de police, de taille de caractères, de direction d’écriture,
il faut utiliser la procédure SetTextStyle.
Voici la syntaxe :

SetTextStyle(Police, Direction, TailleCar : Word);

Police represente la police de caractère à utiliser. Ce peut être l’une des constantes suivantes :

Polices de caractères
Index Constante Description
0 DefaultFont La police par défaut
1 TriplexFont Triplex (style Impact)
2 SmallFont Petite police
3 SansSerifFont Sans serif
4 GothicFont Gothic

Il existe bien d’autres polices que celles citées plus haut. Les polices de caractères sont contenues dans des
fichiers dont l’extension est .chr. Il sont situés dans le repertoire bgi de Turbo
Pascal.
Pour les installer, il faut faire appel à la fonction InstallUserFont. InstallUserFont reçoit
un argument qui represente le nom de la police à installé et renvoi un Integer qui correspond à l’index
de la police. Vous pouvez ensuite utiliser cette index comme si vous utilisier une constante :

var Index : Integer;

begin
Index := InstallUserFont('euro');
end.

Direction caractèrise le sens d’affichage du texte. De gauche à droite ou de bas en haut. Les
valeurs possibles sont les suivantes :

Constantes de direction
Index Constante Description
0 HorizDir Sens horizontal, de gauche à droite
1 VertDir Sens vertical, de bas en haut

Et pour finir, l’argument TailleCar represente la taille du texte à afficher. Cette dimension
ne correspond à rien de précis, puisque la taille du texte affiché différe sensiblement d’une police à une
autre.
Si TailleCar vaut 0 (ou bien à la constante UserCharSize), la taille des caractères pourront
être définis par le programmeur (voir plus loin).
Voici un exemple d’utilisation de SetTextStyle :

uses graph;

varPilote : Integer;
Mode : Integer;

begin
Pilote := Detect;
InitGraph(Pilote, Mode, 'c:\outils\tp\bgi');
SetTextStyle(GothicFont, VertDir, 4);{Police Gothic, vertical, taille 4}
OutTextXY(100, 200, 'Hello! It''s me!');
CloseGraph;
end.

Taille des caractères

Pour savoir quelles dimensions occupe une chaîne de caractères (par exemple, pour la centrer), on utilise
les fonctions TextWidth et TextHeight.
Ces deux fonctions renvoient respectivement la largeur et la hauteur en pixels de la chaîne de caractères qui leur
est passée en argument.
Donc, pour centrer un texte à l’écran, on écrira par exemple :

uses Graph;

varPilote : Integer;
Mode : Integer;
LeTexte : String;

begin
Write('Entrer le texte à afficher : ');
Read(LeTexte);

Pilote := Detect;
InitGraph(Pilote, Mode, 'C:\outils\Tp\BGI');
SetTextStyle(GothicFont, HorizDir, 4);

OutTextXY((GetMaxX - TextWidth(LeTexte)) div 2,
(GetMaxY - TextHeight(LeTexte)) div 2, LeTexte);

CloseGraph;
end.

Si vous avez donné la valeur UserCharSize à l’attribut TailleCar de la procédure
SetTextStyle, vous pouvez faire varier la taille des caractères des polices vectorielles à l’aide
de la procédure SetUserCharSize.
Voici la syntaxe de cette procédure :

SetUserCharSize(MultX, DivX, MultY, DivY : Word);

MultX et DivX represente le rapport à appliquer à la largeur de la police, et
MultY et DivY le rapport vertical.
En clair, il s’agit d’une échelle MultX/DivX comme pour les cartes IGN et le guide Michelin.
Pour doubler la largeur, on donnera la valeur de 2 à MultX et de 1 à DivX, ce qui dera 2/1.
À l’inverse, pour avoir la moitié, on inversera les valeur pour avoir un rapport de 1/2.
Voici un exemple :

uses Graph;

varPilote : Integer;
Mode : Integer;

begin
Pilote := Detect;
InitGraph(Pilote, Mode, 'C:\outils\tp\bgi');
SetTextStyle(GothicFont, HorizDir, UserCharSize);
SetUserCharSize(2, 1, 1, 2);{Largeur * 2, Hauteur / 2}
OutText('Hello! It''s me !');
CloseGraph;
end.

Justification

Lorsque l’on spécifie des coordonnées à OutTextXY, le point transmis est considéré comme étant
le coin supérieur gauche où débuter le texte. Il est cependant possible de modifier ce comportement en faisant
appel à la procédure SetTextJustify. Cet procédure prend 2 arguments, le premier pour la justification
horizontale, et le deuxième pour la justification verticale. Les valeurs possibles sont les suivantes :

Constantes de justification
Index Constante Signification
0 LeftText Gauche, axe horizontal
1 CenterText Centre, axe horizontal
2 RightText Droite, axe horizontal
0 BottomText Bas, axe vertical
1 CenterText Centre, axe vertical
2 TopText Haut, axe vertical

Ainsi, pour écrire dans le coin inférieur droit sans difficultés, il suffira d’écrire :

uses graph;

varPilote : Integer;
Mode : Integer;

begin
Pilote := Detect;
InitGraph(Pilote, Mode, 'C:\outils\tp\bgi');
SetTextJustify(RightText, BottomText);{Coin inférieur droit}
OutTextXY(GetMaxX, GetMaxY, 'Ce coin est le coin inférieur droit');
CloseGraph;
end.

Retrouver les parametres

Il est possible de retrouver très facilement les valeurs des parametres transmis à SetTextStyle
et à SetTextJustify à l’aide de la procédure GetTextSettings. On passe à cette procédure une variable
du type TextSettingsType qui sera modifiée par référence.
Voici le type TextSettingsType :

TextSettingsType = RECORD
  Font      : WORD;
  Direction : WORD;
  CharSize  : WORD;
  Horiz     : WORD;
  Vert      : WORD;
END;
Series Navigation«Turbo Pascal – GraphismesTurbo Pascal – Les types personalisés»
Categories: Turbo Pascal Tags:
  1. fethi
    18/10/2004 à 13:05 | #1

    donner la definition de l’unité graph et les commande (SVP).

  1. Pas encore de trackbacks