getTextHeight()

Retourne la hauteur de l'écriture de la chaîne passée

 

Exemples d'utilisation

// Centre chaîne au milieu de l'écran:
setTextCursor(DEMI_LARGEUR-getTextWidth(chaine)/2,DEMI_HAUTEUR-getTextHeight(chaine)/2); text(chaine);

 

Référence

int getTextHeight(String chaine);

Paramètre passé

chaine: String dont on veut connaître l'espace occupé par son écriture

Valeur retournée

Hauteur de l'écriture de la chaîne passée

 

Voir aussi

- getTextWidth(); Largeur de l'écriture de la chaîne passée
- Fonte vectorielle Définition de la fonte utilisée
- text(); Écrit du texte
- MAX_X, MAX_Y...: Valeurs des coordonnés graphiques
- setTextColor(); Couleur du texte
- setTextSize(); Taille des caractères
- setTextBold(); Gras ou normal
- setTextItalic(); Italique ou normal
- setTextSerif(); Avec ou sans empattement
- setTextOrient(); Direction d'écriture des textes
- setTextKeep(); Choisit l'action si le texte déborde
- setTextCursor(); Coordonnés le point-curseur

 

Notes

Si l'on veut pouvoir center une phrase, on a besoin de connaître l'encombrement de son écriture. Cette fonction nous donne la hauteur.

Comme la taille de l'écriture dépend des attributs (taille, gras, italique, empattements), il faut choisir ces attributs avant l'appel à la fonction.

La hauteur est presque indépendante des caractères. Elle vaut: 8*textSize() + textBold() + 1 pour les lettres "gjpqyçµ", 7*textSize + textBold + 1 pour "&,;_" et 6*textSize+textBold + 1 pour toutes les autres lettres et les autres symboles. Par choix, la fonction retourne la plus grande de ces 3 valeurs et non pas la valeur réelle de la hauteur.

 

Exemple

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-312-getTextWidth\Exemple-312-getTextWidth.ino (dans votre fichier téléchargé):

// Ce programme invente un mot et l'écrit centré sur l'écran avec différents attributs
// Pour le centrer, il faut connaître sa taille avant

#
  $menu = ":PG";
  include <PecheuxGraph_ILI9341_8bits.h>
void setup() 
{
  setGraphMode(PAYSAGE); // Initialisation générale
}
byte n;
String chaine; // Des caractères à écrire
void loop()
{
  clrscr();

  // Attributs quelconques
  setTextSize(random(6)+1); // Taille des caractères entre 1 et 10
  setTextSerif(random(2)); // Avec ou sans empattements
  setTextItalic(random(5)==0?ITALIC:NORMAL); // Italique une fois sur 5
  setTextBold(random(3)+1); // Entre 1 et 4 traits 

  // Mot quelconque
  chaine=char(random(26)+'A'); // Première lettre en majuscule
  for (int i=random(4)+2; i>0; i--) chaine+=char(random(26)+'a'); // Suit 2 à 5 minuscules 
  
  // Ecriture du texte centré
  setTextCursor(DEMI_LARGEUR-getTextWidth(chaine)/2,DEMI_HAUTEUR-getTextHeight(chaine)/2); text(chaine); 

  delay(1000);
}

Résultat:

 

Côté technique

Pour cette fonction, il y a des choix à faire. Si on veut la hauteur réelle de la chaîne, que doit-on retourner si la chaîne est "-". En toute rigueur, c'est 1 pixel en taille 1. Mais est-bien utile de donner cette valeur réelle, ou la taille de la matrice ne serait-elle pas mieux? Si on veut donner la taille réelle, rien dans la matrice ne nous permet de le savoir, sinon a examiner chacun des vecteurs. En fait la seule solution est d'avoir un table supplémentaire qui contiendrait la première et la dernière ligne de la matrice utilisée. Cette table utiliserait 125 octets supplémentaires. Pour avoir la taille réelle, il faut calculer la ligne la plus haute et la ligne la plus basse de tous les caractères. Le jeu n'en vaut pas la chandelle. C'est pour cela que la fonction retourne la taille de la matrice.