fillRect()
Dessine un pavé plein
Exemples d'utilisation
fillRect(10,15,10+7,15+7,RED); // Dessine un pavé rouge fillRect(10,15,17,22); // Pareil si on avait dessiné auparavant en rouge fillRect(10+7,15,10,15+7); // Pareil fillRect(random(LARGEUR), random(HAUTEUR), random(LARGEUR), random(HAUTEUR), RANDOM_COLOR); // Pavé quelconque fillRect(0, 0, MAX_X, MAX_Y, BLACK)); // Dessine un rectangle noir occupant tout l'écran. // C'est en fait un effacement d'écran, sauf que cela ne réinitialise pas le curseur
Référence
void fillRect(int x1, int y1, int x2, int y2, word couleur); void fillRect(int x1, int y1, int x2, int y2);
Paramètre passé
x1,y1: coordonnés d'un sommet du pavé
x2,y2: coordonnés du sommet opposé
couleur: couleur du pavé, voir BLACK, WHITE, ... ou RGBcolor
Valeur retournée
Aucune
Voir aussi
- rect(); Trace les bords d'un cadre
- clrscr(); Efface l'écran
- line(); Trace une ligne
- lineTo(); Trace une ligne qui part de la dernière ligne tracée
- RGBcolor(); Transforme un triplet RGB en un code couleur
- MAX_X, MAX_Y...: Valeurs des coordonnés graphiques
- BLACK, WHITE, ...: Constantes couleurs
- setLimites(); Limite la zone de dessin
- setDrawInverse(); Choix du mode dessin ou inversion
- point(); Dessine un point
- hLine(); Trace une ligne horizontale
- vLine(); Trace une ligne verticale
- circle(); Trace un cercle
- fill(); Remplit avec la couleur demandée
Notes
En mode NORMAL, dessine un rectangle plein avec la couleur spécifiée si présente, ou avec la dernière couleur utilisée par point(), fillRect(), circle(),... si le paramètre couleur n'est pas passé. La nouvelle couleur est mémorisée pour les prochains tracés graphiques. En mode INVERSE, cette fonction inverse la couleur sans tenir compte de la couleur éventuellement passée en paramètre; la nouvelle couleur du rectangle n'est pas mémorisée.
La différence entre le remplissage de l'écran par clrscr() et par fillRect(), c'est que ce dernier va prendre comme nouvelle couleur celle du remplissage. clrscr(BLACK) annonce des caractères blanc sur fond noir alors que fillrect(0,0,LARGEUR, HAUTEUR, BLACK) prédispose à écrire noir sur fond noir. De plus clrscr() ramène le curseur texte à l'origine et impose le mode dessin.
N'est dessiné que la partie qui tient dans les limites données par la fonction setLimites() (tout l'écran par défaut).
Exemple
PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-205-fillRect\Exemple-205-fillRect.ino (dans votre fichier téléchargé):
// Affiche une cadre familier pour les utilisateurs de windows! // En réalité ce n'est rien que des boîtes pleines #include <PecheuxGraph_ILI9341_8bits.h> void setup() { setGraphMode(PAYSAGE); // Obligatoire pour utiliser l'écran // fond d'écran clrscr(BLUE); // clrscr() utilise d'ailleurs fillRect()! // Cadre au milieu fillRect(DEMI_LARGEUR-53,DEMI_HAUTEUR-23,DEMI_LARGEUR+53,DEMI_HAUTEUR+23,BLACK); // Cadre noir (dedans est effacé par la suite) fillRect(DEMI_LARGEUR-50,DEMI_HAUTEUR-20,DEMI_LARGEUR+50,DEMI_HAUTEUR+20,RGBcolor(28)); // Fond du message setTextColor(BLACK); setTextCursor(DEMI_LARGEUR-25,DEMI_HAUTEUR-15); text("Oups!"); setTextSize(1); setTextCursor(DEMI_LARGEUR-46,DEMI_HAUTEUR+6); text("Erreur inconnue"); // Menu en bas fillRect(0,MAX_Y-20,MAX_X,MAX_Y,DARK_BLUE); // Barre bleue en bas de l'écran fillRect(2,MAX_Y-18,9,MAX_Y-11,RED); // Carré rouge style windows fillRect(11,MAX_Y-18,18,MAX_Y-11,GREEN); // Carré vert style windows fillRect(2,MAX_Y-9,9,MAX_Y-2,BLUE); // Carré bleu style windows fillRect(11,MAX_Y-9,18,MAX_Y-2,YELLOW); // Carré jaune style windows setTextColor(BLUE); setTextCursor(30,MAX_Y-18); setTextSize(2); setTextBold(1); text("e"); // Style iExplorer fillRect(50,MAX_Y-10,60,MAX_Y-3,YELLOW); fillRect(50,MAX_Y-12,55,MAX_Y-11,YELLOW); // Style eExplorer } void loop() { }
Résultat:

Côté technique
fillRect() définit une zone rectangulaire à l'écran et le remplit avec la couleur désirée. Certains drivers ne reconnaissent pas les différents modes paysage ou portrait comme le ILI9341. C'est pour cela que le remplissage se fera systématiquement dans le même sens physique, de haut vers bas en mode portrait, de bas en haut en mode portrait inversé, de gauche à droite en mode paysage... Avec certains drivers qui reconnaissent les 4 orientations comme le ST7781, le remplissage se fait dans le sens du dernier remplissage. Il est inutile en effet d'imposer un sens (perte de temps et appel d'une fonction inutile en plus).
Pour le remplissage, si les poids forts et faibles de la couleur sont identiques, la fonction est plus rapide (voir clrscr()).