Turbo Pascal – L’unité Graph et le texte
- Turbo Pascal – Introduction au Turbo Pascal
- Turbo Pascal – Ecrire sur l’écran
- Turbo Pascal – Un peu de maths
- Turbo Pascal – Les commentaires
- Turbo Pascal – Les variables
- Turbo Pascal – Les constantes
- Turbo Pascal – Entrée de données
- Turbo Pascal – Structure conditionnelle
- Turbo Pascal – Les cas
- Turbo Pascal – Branchements
- Turbo Pascal – Les boucles
- Turbo Pascal – Procédures et fonctions
- Turbo Pascal – Les unités
- Turbo Pascal – Les tableaux
- Turbo Pascal – Les maths
- Turbo Pascal – Le traitement du texte
- Turbo Pascal – Affichage du texte
- Turbo Pascal – Le son
- Turbo Pascal – Graphismes
- Turbo Pascal – L’unité Graph et le texte
- Turbo Pascal – Les types personalisés
- Turbo Pascal – Les pointeurs
- Turbo Pascal – Les objets
- Turbo Pascal – Les ensembles
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 :
| 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 :
| 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 :
| 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;
donner la definition de l’unité graph et les commande (SVP).