setTextBold()
Bibliothèque graphique pour shield Uno/Mega
Impose l'épaisseur des tracés des textes.
Exemples d'utilisation
setTextBold(BOLD); // Passage en mode gras setTextBold(NORMAL); // Retour au caractères normaux (non gras) setTextBold(1); // Caractères filiformes (un seul trait) setTextBold(3); // Caractères dessinées avec trois traits
Référence
void setTextBold(int epaisseur);
Paramètre passé
epaisseur: NORMAL pour le mode normal par défaut, BOLD pour le mode gras par défaut, sinon nombre de lignes des tracés
Valeur retournée
Aucune
Voir aussi
- BOLD Pour le passage au mode gras par défaut
- NORMAL Pour le passage au mode normal par défaut
- getTextBold(); Retourne l'épaisseur des tracés texte
- textBold Contient l'épaisseur des tracés texte
- Fonte vectorielle Définition de la fonte utilisée
- text(); Écrit du texte
- setTextSize(); Taille des caractères
- setTextItalic(); Italique ou normal
- setTextSerif(); Avec ou sans empattement
- setTextOrient(); Direction d'écriture des textes
Notes
Les caractères sont dessinés par des traits et des arcs de cercle. En appelant setTextBold(epaisseur); chaque ligne sera dessinée par "epaisseur" droites ou "epaisseur" arcs. Ainsi si epaisseur=1, on dessine 1 seul trait, le tracé est filiforme. Pour epaisseur=2 on aura 2 traits, pour epaisseur=3, on aura 3 traits... Si on passe comme paramètre NORMAL, le tracé est choisi pour donner un rendu agréable. Si on passe comme paramètre BOLD, on a un rendu gras. L'épaisseur dépend de la taille des caractères.
Si on change la taille des caractères, en appelant setTextSize(), cela remet la fonte en épaisseur normale.
Exemple
// Pour une taille donnée, essais sur des gras de plus en plus prononcés
// Fonctionne mieux en mode paysage. En mode portrait, les caractères se
// supperposent à partir de la taille 7.
#include <PxGraph_ST7781_Shield.h> // Voir http://arduino.dansetrad.fr/PxGraph
void setup()
{
setGraphMode(PAYSAGE); // Initialisation générale
}
int taille=1;
int lignesNormal, lignesBold; // Nombre de lignes dans ces deux modes
void loop()
{
// Nouvelle taille de caractères
setTextSize(taille);
clrscr();
// Affichage normal en rouge
setTextBold(NORMAL); // Passage au mode normal
setTextColor(RED);
text("Taille "+String(taille));
lignesNormal=getTextBold(); // Mémorisation du nb de lignes
// Affichage du mot Bold en vert
setTextBold(BOLD); // Passage au mode gras
setTextColor(GREEN);
text("\nBold");
lignesBold=getTextBold(); // Mémorisation du nb de lignes
// Affichage en bas d'une palette de gras
setTextCursor(0,HAUTEUR-8*taille-8); // Se mettre en bas à gauche
for (int i=1; i<8; i++)
{
setTextBold(i); // Pour différentes épaisseurs
if (i==lignesNormal) setTextColor(RED); // Cela correspond au mode NORMAL
else if (i==lignesBold) setTextColor(GREEN); // Cela correspond au mode BOLD
else setTextColor(WHITE); // Autres valeurs
text(String(i)); // Et on affiche le nombre de lignes tracé
}
delay(5550); // Pour qu'on ait bien le temps de voir
if (++taille==10) taille=1; // Passe à la taille suivante, max 9
}
Résultat:
Ecrit en rouge les caractères normaux, en vert les gras, en blanc d'autres possibilités. Les chiffres correspondent au paramètre passé à setTextBold().
Côté technique
Les caractères sont définis par des vecteurs. Par exemple, le U ci-contre est défini par 3
vecteurs repérés 1 pour le centre d'un arc de cercle, 0 et 2 pour des droites. En mode filiforme, pour chaque vecteur on dessine une
droite seule ou un seul arc. Si on veut un caractère plus épais on va tracer plus de droites et d'arcs. Si j'agrandis les arcs de
cercles, pour le U, il faudra agrandir les droites vers la gauche pour le vecteur 2, mais vers la droite pour le vecteur 0. Ce n'est
pas simple. J'ai choisi alors d'agrandir les tracés des deux côtés. Pour un rajout de 1 seule ligne, je la rajoute d'un côté ou de
l'autre sans grande importance. J'ai choisi d'agrandir les arcs (mieux pour les points qui sont définis par un cercle de rayon 0) et
de doubler les droites vers la gauche et vers le haut. Pour 2 lignes en plus, ce n'est pas compliqué, je rajoute une ligne de tous les
côtés.