Une forme canvas peut être remplie avec un dégradé linéaire ou radial.
Examinons d'abord les dégradés radiaux puis les dégradés linéaires.
Le canevas comprend deux parties. Le cercle de gauche est rempli avec un dégradé radial tricolore et le cercle de droite est rempli avec un dégradé radial tricolore également mais avec un cercle rouge de rayon X/8 non dégradé.
var canevas = document.querySelector("canvas"); var contexte = canevas.getContext('2d'); X = canevas.width; Y =canevas.height; // degradé radial pour le cercle de gauche var degrade1 = contexte.createRadialGradient(X/4,Y/2,0,X/4,Y/2,X/3) ; // dégrade de violet à blanc en passant à rose ; dégradé commence immédiatement degrade1.addColorStop(0,"purple"); degrade1.addColorStop(0.5,"pink"); degrade1.addColorStop(1,"white"); contexte.fillStyle = degrade1; contexte.arc(X/4, Y/2, X/4, 0, Math.PI*2); contexte.fill(); // dégradé radial pour le cercle de droite var degrade2 = contexte.createRadialGradient(X/4*3,Y/2,X/8,X/4*3,Y/2,X/3) ; // dégrade de rouge à blanc en passant par orange ; dégradé différé de 50 degrade2.addColorStop(0,"red"); degrade2.addColorStop(0.5,"orange"); degrade2.addColorStop(1,"white"); contexte.fillStyle = degrade2; contexte.beginPath(); contexte.arc(X/4*3, Y/2, X/4, 0, Math.PI*2); contexte.fill(); ...
La largeur d'affichage du canevas toujours égale à 80% de celle du conteneur. Mais pour le script les dimensions du canevas seront : 900 par 450 (valeurs des attributs width / height de la balise CANVAS).
On rencontre ensuite dans le script une nouvelle méthode de l'API canvas : var degrade 1 = contexte.createRadialGradient(X/4,Y/2,0,X/4,Y/2,300)
Pour un bon rendu il est souhaitable que les deux cercles aient le même centre. Ce qui est le cas ici pour les deux dégradés radiaux.En effet dans chaque cas le premier paramètre est égal au troisième et le deuxième paramètre est égal au cinquième.
Pour le premier dégradé le rayon du cercle intérieur (troisième paramètre) est 0 ce qui veut dire que la première couleur (purple) se dégrade immédiatement alors que dans le deuxième dégradé la valeur du rayon du centre intérieur est X/8 donc il y a au centre un rond rouge de rayon X/8 uni.
Le deuxième canevas de la page comprend deux carrés. Le carré de gauche est rempli avec un dégradé linéaire bicolore et le carré de droite est rempli avec un dégradé linéaire tricolore.