Bonjour à tous,
Je galère avec un afficheur lcd 1.44" et la biblio Adafruit ST7735.
Pour ne pas avoir à effacer complètement l'écran puis le réécrire (pb de temps), J'essaye d'effacer seulement une ligne, en écrivant des espaces en couleur "BLACK" puis en réécrivant par dessus. Mais ça ne marche pas, les espaces ne sont visiblement pas pris en compte !
Comment faire ?
Merci de vos lumières
vous dépendez de la bibliothèque Adafruit_GFX.h pour dessiner sans doute
pour effacer il faut demander les coordonnées de l'ancien texte à effacer avec getTextBounds()
puis faire un fillRect() avec la couleur de fond sur ces coordonnées
sinon vous pouvez essayer un setTextColor() mais avec l'option qui met une couleur de fond (2 paramètres).
Je ne sais plus si leur police a une largeur fixe ou variable cependant pour les caractères (à regarder dans GFXfont)
Ok, merci je vais essayer
Bonjour JOE56670
Pour éviter d'effacer l'écran ou une ligne, j'ai une fonction d'affichage de texte qui mémorise le dernier texte affiché. Quand vient le prochain texte, j'affiche le précédent avec la couleur du fond, affiche le nouveau avec la couleur "normale" et enregistre ce nouveau texte. C'est très propre.
Cordialement
jpbbricole
oui ça fonctionne aussi
Dessiner du texte est souvent plus lent cependant que de remplir un rectangle qui recouvre l'ancien texte avec la couleur de fond et ça prend un peu plus de mémoire (au lieu de mémoriser le dernier texte vous pourriez juste mémoriser les dernières coordonnées du rectangle englobant le texte)
PS: jolie démo !
Bonjours à tous,
La solution de jpbbricole Fonctionne bien.
Concernant la solution de JML, je n'ai pas pu la tester car, je n'arrive pas à récupérer les cordonnées avec la fonction getTextBounds.
j'ai bien mis : tft.getTextBounds ( m_strText, 0, 10, &nX, &nY, &nW, &nH);
mais après, comment récupérer les nx, ny, nW, nH.
j'aimerais également les afficher sur la console mais je ne trouve pas le moyen de convertir des uint16_t pour les afficher !
Je préférerais n'effacer qu'une partie de la ligne en utilisant la solution de JML, car j'ai beaucoup de variables à afficher.
Ces 4 variables doivent être déclarées dans ton code.
Tu passes leurs pointeurs comme arguments de la fonction et tu utilises les variables dans ton code:
uint16_t nX, nY, nW,nH;
tft.getTextBounds ( m_strText, 0, 10, &nX, &nY, &nW, &nH);
tft.fillRect(nX, nY, nW, nH, bgColor);
Bonjour à tous et joyeux Noel !
Merci, ça fonctionne finement (enfin grâce à vous).
Mais je vais encore abuser de vos conseils.
Dans mon message Web, je souhaiterais changer la couleur d'affichage d'une variable (output1State) en fonction de son état : ON ou OFF.
J'ai beau mettre des balises, rien à faire !
Voici l'extrait :
Blockquote
C'est résolu.
Bravo - postez la solution retenue ça pourra toujours aider quelqu’un plus tard
