setLimites()

Permet de limiter les dessins à une zone rectangulaire.

 

Exemples d'utilisation

setLimites(0,0,10,10); // Permet de ne dessiner que dans ce petit carré
setLimites(0,0,1000,1000); // Limite à l'écran car l'écran est plus petit
setLimites(); // Limite à l'écran tout entier (= enlève les limites)
setLimites(1); // Interdit la colonne la plus à gauche

 

Référence

void setLimites(int x1 = 0, int y1 = 0, int x2 = 32000, int y2 = 32000);

Paramètres passés

x1,y1: coordonnés d'un sommet du rectangle
x2,y2: coordonnés du sommet opposé
Ne sera dessiné que ce qui tient dans le rectangle défini

Valeur retournée

Aucune

 

Voir aussi

- setGraphMode(); Initialisation de l'écran
- setTextOrient(); Direction d'écriture des textes
- screenPrint(); Copie d'écran sur la carte SD

 

Notes

Les paramètres définissent un rectangle. Cela fonctionne comme si l'écran était plus petit. Cela concerne tous les tracés (points, droites, cercles, rectangles, textes, images...). Attention la fonction screenPrint(), utilisant tout l'écran remet les limites à l'écran entier.

Si une valeur dépasse les limites de l'écran physique, la limite est alors fixée au bord de l'écran. Si on ne donne pas de paramètres, c'est qu'il s'agit de l'écran entier.

 

Exemple

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-103-setLimites\Exemple-103-setLimites.ino (dans votre fichier téléchargé):

// L'intérieur d'une maison est dessinée et le soleil passe derrière la
// fenêtre On ne peut pas dessiner des morceaux de cercle pour faire
// "apparaître" ou "disparaître" le soleil. Par contre on peut dessiner le
// soleil en entier mais limiter son dessin à la taille de la fenêtre. Comme
// il y a deux fenêtres dans ce cas, je dessine le tout deux fois, la 
// première en se limitant à la fenêtre de gauche, la deuxième fois à la
// fenêtre de droite

#include <PecheuxGraph_ILI9341_8bits.h>

const int CIEL = 0x755E;
void setup()
{
  setGraphMode(PAYSAGE); // Initialisation

  maison(0, 0); // Dessin de l'intérieur d'une maison
  fillRect(50, 55, 107, 155, CIEL); // Vitre de gauche
  fillRect(114, 55, 170, 155); // Vitre de droite
}

int x; // abscisse du centre du soleil
void loop()
{
  if (++x > 250) x = 0; // x décrit [0..250]

  // Dessin du soleil dans la nouvelle position
  setLimites(50, 55, 107, 155); // Ce qui apparaît dans la vitre de gauche
  fillCircle(x, 140 - x / 2, 20, YELLOW); // Soleil
  circle(x, 140 - x / 2, 21, CIEL); // Effacement périphérique
  circle(x, 140 - x / 2, 22, CIEL); // Effacement double
  setLimites(114, 55, 170, 155); // Ce qui apparaît dans la vitre de droite
  fillCircle(x, 140 - x / 2, 20, YELLOW); // Soleil
  circle(x, 140 - x / 2, 21, CIEL); // Effacement périphérique
  circle(x, 140 - x / 2, 22, CIEL); // Effacement double

  delay(40); // Sinon le soleil va trop vite
}

Résultat:

 

clrscr()   <<     >>   initSD