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()).