pourBoutonTexte()
Indique comment dessiner un bouton avec du texte dedans
Exemples d'utilisation
pourBoutonTexte("Marche"); // Dessine un bouton avec marqué Marche et dit comment l'écrire
Référence
void pourBoutonTexte(String texte);
Paramètre passé
texte: le texte qui sera encadré par le bouton
Valeur retournée
Aucune
Voir aussi
- scanEvent(); Moteur de la gestion des événements
- rect(x1, y1, x2, y2[, couleur]); Trace les bords d'un cadre
- text("texte"); Écrit du texte
- PushZone(x1, y1, x2, y2); Bouton poussoir invisible
Notes
Cette fonction sert à l'élaboration d'un projet. C'est une aide. Elle ne doit exister dans un projet que le temps de la mise en place d'un bouton de type texte.
Cette fonction demande le positionnement du bouton par le stylet, puis donne les informations sur la console permettant de dessiner le bouton. On peut l'utiliser pour mettre en place tout type de boutons. Au lieu de dessiner un bouton sur lequel est écrit un texte (Marche, Arrêt, Stop...), on va appeler cette fonction. En retour, on fait un couper coller des définitions dans le programme. Ben entendu, on peut corriger les valeurs retournées, mais on a déjà une bonne base.
Pour avoir ces informations, il faut ouvrir la console série.
Les informations retournées sont:
- une ligne pour la déclaration statique du bouton
- 4 lignes pour le dessin du bouton.
En appelant pourBoutonTexte("Bonjour"); et en pointant au milieu de l'écran, on va recevoir sur la console par exemple le texte:
╔═══════════════════════════════════════════╗ ║ Aide à la mise en place d'un bouton texte ║ ╚═══════════════════════════════════════════╝ ──────── Définition du PushZone associé ──── PushZone XXXXXXXXX(131, 114, 211, 138); // Mise en place du bouton affichant "Bonjour" ──────────── Dessin du bouton ────────────── // Dessin du bouton affichant "Bonjour" rect(131, 114, 211, 138); // Fond fillRect(132, 115, 210, 137, ~drawColor); // Cadre autour setTextCursor(134, 118); // Mise en place du nom text(F("Bonjour")); // Nom du bouton ────────────────────────────────────────────
La ligne suivante est la décraration du bouton
PushZone XXXXXXXXX(131, 114, 211, 138); // ...
Il vaut mieux renommer le bouton qui s'appelle XXXXXXXXX, en par exemple boutonBonjour. Il est possible aussi de changer PushZone en un autre type de bouton, qui n'a pas de dessin (CheckZone ou RadioRone).
Les 4 lignes:
// Dessin du bouton affichant "Bonjour" rect(131, 114, 211, 138); // Fond fillRect(132, 115, 210, 137, ~drawColor); // Cadre autour setTextCursor(134, 118); // Mise en place du nom text(F("Bonjour")); // Nom du bouton
sont les lignes qui dessinent le bouton. Si le bouton n'est jamais effacé, on met ces lignes dans le setup(), sinon, il faut les mettre chaque fois que l'on veut redessiner le bouton, ou dans une fonction.
Pour déplacer le bouton, il suffit d'augmenter ou diminuer les abscisses ou les ordonnées. Avec ce que l'on a récupéré:
╔═══════════════════════════════════════════╗ ║ Aide à la mise en place d'un bouton texte ║ ╚═══════════════════════════════════════════╝ ──────── Définition du PushZone associé ──── PushZone XXXXXXXXX(131, 114, 211, 138); // Mise en place du bouton affichant "Bonjour" ──────────── Dessin du bouton ────────────── // Dessin du bouton affichant "Bonjour" rect(131, 114, 211, 138); // Fond fillRect(132, 115, 210, 137, ~drawColor); // Cadre autour setTextCursor(134, 118); // Mise en place du nom text(F("Bonjour")); // Nom du bouton ────────────────────────────────────────────
- pour décaler le bouton de X pixels vers la droite, ajouter X à tous les nombres rouges
- pour décaler le bouton de X pixels vers la gauche, retrancher X à tous les nombres rouges
- pour décaler le bouton de X pixels vers le bas, ajouter X à tous les nombres verts
- pour décaler le bouton de X pixels vers le haut, retrancher X à tous les nombres verts
Exemple
Utiliser la première ligne pour déclarer l'objet
// Mise en place d'un simple bouton de type PushZone à l'aide des données
// fournies par pourBoutonTexte()
#
$menu = ":PG";
include <PecheuxGraph_ILI9341_8bits.h> // Appel de la bibliothèque
PushZone XXXXXXXXX(131, 114, 211, 138); // Mise en place du bouton affichant "Bonjour"
void setup()
{
setGraphMode(PAYSAGE); // Initialisation de la carte, pour utiliser fillRect()
}
void loop()
{
scanEvent(); // Gestion des boutons et des horloges, le plus souvent seul dans le loop
}
Je devrai renommer l'objet, mais ici c'est une exemple, je ne le fais pas.
Utiliser les 5 lignes de définition pour dessiner l'objet
// Mise en place d'un simple bouton de type PushZone à l'aide des données
// fournies par pourBoutonTexte()
#
$menu = ":PG";
include <PecheuxGraph_ILI9341_8bits.h> // Appel de la bibliothèque
PushZone XXXXXXXXX(131, 114, 211, 138); // Mise en place du bouton affichant "Bonjour"
void setup()
{
setGraphMode(PAYSAGE); // Initialisation de la carte, pour utiliser fillRect()
// Dessin du bouton affichant "Bonjour"
rect(131, 114, 211, 138); // Fond
fillRect(132, 115, 210, 137, ~drawColor); // Cadre autour
setTextCursor(134, 118); // Mise en place du nom
text(F("Bonjour")); // Nom du bouton
}
void loop()
{
scanEvent(); // Gestion des boutons et des horloges, le plus souvent seul dans le loop
}
Continuer le programme. Par exemple pour rendre cet exemple fonctionnel, je rajoute un remplissage du bouton quand on clique sur le bouton:
PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-704-pourBoutonTexte.ino (dans votre fichier téléchargé):
// Mise en place d'un simple bouton de type PushZone à l'aide des données // fournies par pourBoutonTexte() # $menu = ":PG"; include <PecheuxGraph_ILI9341_8bits.h> // Appel de la bibliothèque PushZone XXXXXXXXX(131, 114, 211, 138); // Mise en place du bouton affichant "Bonjour" void remplit(void) { fill(132, 115, RANDOM_COLOR); } void setup() { setGraphMode(PAYSAGE); // Initialisation de la carte, pour utiliser fillRect() // Dessin du bouton affichant "Bonjour" rect(131, 114, 211, 138); // Fond fillRect(132, 115, 210, 137, ~drawColor); // Cadre autour setTextCursor(134, 118); // Mise en place du nom text(F("Bonjour")); // Nom du bouton XXXXXXXXX.onSelectFunction = &remplit; } void loop() { scanEvent(); // Gestion des boutons et des horloges, le plus souvent seul dans le loop }
Côté technique
Cette fonction utilise des ressources, mais n'existe plus dans la version finale. Ce qui fait que sa taille n'est pas d'une grande importance. J'aurais pu faire un logiciel séparé, mais c'est beaucoup plus pratique comme cela.