Le placement du texte

On a vu pour mettre un texte à la bonne place que l'on avait deux outils. Le premier est la fonction textAlign() qui nous permet de choisir la façon dont on va aligner le texte. Le second outil, ce sont les paramètres que l'on passe à la fonction text() : on donne l'abscisse et l'ordonnée de point par rapport auquel on va placer le texte. Il existe une seconde façon de faire qui pourra se montrer très utile par la suite, et que nous avions djàa vu pour les formes complexes : déplacer le repère.

Le repère est normalement avec l'origine placée en haut à gauche du canevas, les abscisses horizontalement de gauche à droite et les ordonnées du haut vers le bas. On peut déplacer le repère en utilisant la fonction translate(). Pour mémoriser la place du repère, on peut utiliser la fonction push() et pour le récupérer la fonction pop(). Voici du coup deux ensembles d'instructions qui seront équivalents :

text("texte",30,50); // placer le texte en 30,50
// est équivalent à
push();// je mémorise l'emplacement du repère
translate(30,50); // je place l'origine du repère au point de coordonnées 30,50
text("text",0,0); // je place le texte à la nouvelle origine
pop()// Je remets le repère à son emplacement initial

Mais alors, quel est l'intérêt de tout cela à part de rajouter des lignes ? On peut faire autre chose que de déplacer le repère. On peut aussi zoomer/dézoomer par rapport à l'origine du repère avec la fontcion scale()( ce qui signifie échelle en anglais).

Cette mise à l'échelle est très intéressante. En effet, on va pouvoir la mettre en relation avec la fonction textWidth() qui donne la largeur d'une chaine de caractère

Enfin, dernière fonction qui permet de manipuler le repère : rotate() qui permet de faire tourner le repère. On pourra s'en servir pour incliner le texte, le mettre verticalement par exemple. La rotation s'effectue toujours par rapport à l'origine du repère, c'est pour cela qu'il est important de faire d'abord la translation et ensuite la rotation.

Éditeur
À faire vous même.
Dans l'exemple, ci dessus, on a affiché un texte et un carré bleu. La taille du texte est aussi affiché en haut à gauche. On voit qu'il est de 117 pixels. L'objectif de la première activité est de placer ce texte sur la ligne de base du carré, en étant centré.
  • Quels sont les coordonnées des quatre coins du carré ? Prenez si besoin une feuille de papier.
  • On a les coordonnées des coins du carré. À quel ordonnée doit on placer le texte pour qu'il repose sur la ligne du bas ?
  • On veut centrer le texte sur la ligne du bas. Quel paramètre doit on mettre dans textAlign() ?
  • Pour centrer le texte sur la ligne du bas, quel est l'abscisse du milieu de la ligne du bas ?
  • à partir de toutes ces informations, vous pouvez maintenant placer le texte avec les instructions suivants :
    textAlign() pour bien positionner le texte
    push() pour conserver la mémoire de la position du repère
    translate() pour se rendre au point central de la ligne du bas
    text("mon joli texte",0,0) pour placer le texte à cet endroit
    pop() pour replacer le repère à sa position initiale
Maintenant, en plus de se positionner en bas, on va prendre toute la largeur du carré.
  • Quel est la largeur du texte ?
  • Par quelle fonction est elle donné ?
  • Par quel nombre (quelle fraction) doit on le multiplier pour passer de la largeur du texte à la largeur du carré ?
  • En utilisant ces informations, utilisez la fonction scale() (entre la translation et le dessin du texte) pour donner au texte la taille qui convient
difficile Maintenant, on va placer le texte non plus sur la ligne du bas, mais sur le coté droit, à l'intérieur
  • De quel angle faudra t'il tourner ? (on pourra utiliser les angles en degrés)
  • Autour de quel point doit on tourner (plusieurs réponses sont possibles)
  • modifier la fonction translate et ajouter un appel à la fonction rotate pour atteindre votre objectif