Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Dans cette page j'évoque entre autres, la méthode clearRect() de la bibliothèque Canvas mais je vais vous montrer aussi l'intérêt de prévoir
dans la partie HEAD la balise NOSCRIPT.
Thème : dessiner le drapeau de la Suisse ; un drapeau un peu sali ...
J'aborde dans cette page la fonction clearRect(x,y,largeur,hauteur) qui permet d'effacer une partie de la zone de dessin d'un remplissage
précédent.
La zone de dessin Canvas fait 400 par 400.
Il faut d'abord créer un carré (200 de côté) centré dans la zone de dessin et rempli de rouge.
Mais comment déterminer les coordonnées de l'arête supérieure gauche de chaque rectangle d'effacement ?
La zone de dessin fait 400 par 400. Si vous utilisez une feuille avec des petits carreaux
(de 5mm par 5mm), décidez alors d'une échelle. Je vous propose qu'un carreau représente 10px par 10px.
Donc un 1/2 cm = 10px ou 1cm = 20px. Vous avez donc une échelle 1/20 (1cm pour 20px).
C'est l'échelle que j'ai utilisé dans le croquis ci-dessous.
Nous allons maintenant dessiner le drapeau norvégien !
Ci-dessous un extrait du code :
Canvas : effacement partiel de formes
Avant un second appel de la page, désactivez javaScript.
Un message apparait et les boites Canvas sont alors vides. Ce qui est logique puisque les scripts Canvas ne sont plus
interprétés.
Donc dès que votre page web contient un script, pensez à utiliser le conteneur NOSCRIPT pour afficher un message qui signale éventuellement que ce dernier
n'a pu être exécuté.
Premier exemple
La croix du drapeau n'est pas blanche mais gris sale ; ce qui un comble pour un pays réputé pour sa propreté.
Le code correspondant (extraits)
Commentaire du code HTML
Il s'agit d'une élément HTML de la page donc on peut lui appliquer la propriété CSS background.
Commentaire du script
Puis il faut effacer une partie du rouge avec deux rectangles d'effacement : méthode clearRect(x,y,largeur, hauteur). Donc ces deux zones
retrouvent un fond "gris clair" ... (couleur de fond de la balise Canvas).
La méthode clearRect() ne remplit pas de blanc mais efface partiellement la couche rouge pour retrouver la couche en dessus : gris clair.
Si vous voulez que la croix du drapeau soit blanche, il suffit de supprimer "background : lightgrey" dans l'instruction HTML.
Un peu de méthode
Si vous voulez être productif (coder vite et bien) je vous conseille de faire un croquis (sur une feuille de papier
millimétrée ou une feuille à petit carreaux) avant de coder proprement dit. Vous éviterez maints tâtonnements ...
La boite Canvas (400 par 400) fait donc dans notre croquis 40 carreaux (20cm) de côté.
Ensuite vous dessinez le carré rouge (200px ou 10cm de côté) et les rectangles d'effacement.
Le graphique vous indique directement les valeurs x et y du carré et de chaque rectangle.
Quant à la détermination des "width" et "height" en pixels, il suffit de multiplier par 20 la cote en centimètres donnée par le croquis ...
Un deuxième exemple plus complexe
Le canevas fait 640 par 460 et le drapeau occupe toute la zone de dessin.
La procédure :