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.