setLimites()
Bibliothèque graphique pour shield Uno/Mega
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
// 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 <PxGraph_ST7781_Shield.h> // Voir http://arduino.dansetrad.fr/PxGraph
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: