Ajout d’ombres et utilisation de la transparence dans un canevas en JavaScript

L’API Canvas met à notre disposition, via les interfaces la composant, de nombreuses méthodes nous permettant de dessiner toutes sortes de formes et de leur appliquer différents styles.

Parmi les styles les plus notables, on peut noter l’ajout d’effets de transparence et d’ombres aux différentes figures de nos canevas.

 

Gérer la transparence de nos dessins

Jusqu’à présent, nous n’avons dessiné que des figures opaques. On va cependant également pouvoir dessiner des figures semi-transparentes.

Il existe deux manières de faire cela : on peut soit directement passer une couleur semi-transparente en valeur des propriétés strokeStyle ou fillStyle en utilisant par exemple des notations RGBa, soit utiliser la propriété globalAlpha de l’interface CanvasRenderingContext2D.

La propriété globalAlpha va prendre une valeur comprise entre 0 (totalement transparent) et 1 (totalement opaque).

Généralement, on préférera utiliser passer une notation de couleur gérant la transparence à strokeStyle ou fillStyle car c’est la façon la plus simple de procéder. Il suffira donc d’écrire :

See the Pen
Cours JavaScript 15.5.1
by Pierre (@pierregiraud)
on CodePen.

Cependant, dans certaines situations et notamment lorsqu’on doit dessiner de nombreuses figures avec le même niveau de transparence, il peut être plus rapide de définir globalAlpha. Dans ce cas, on écrira :

See the Pen
Cours JavaScript 15.5.2
by Pierre (@pierregiraud)
on CodePen.

 

Ajouter des ombres à nos figures

On va également pouvoir ajouter des ombres à nos figures. Pour cela, nous allons devoir utiliser les propriétés shadowOffsetX, shadowOffsetY, shadowBlur et shadowColor de l’interface CanvasRenderingContext2D.

La propriété shadowOffsetX prend en valeur le décalage horizontal de l’ombre que l’on souhaite créer par rapport aux formes de notre canevas. Une valeur positive décalera l’ombre vers la droite tandis qu’une valeur négative la décalera vers la gauche.

La valeur par défaut est 0 ce qui signifie que l’ombre n’est pas décalée horizontalement (elle est centrée horizontalement par rapport à la forme et se situe derrière elle).

La propriété shadowOffsetY prend en valeur le décalage vertical de l’ombre que l’on souhaite créer par rapport aux formes de notre canevas. Une valeur positive décalera l’ombre vers le bas tandis qu’une valeur négative la décalera vers le haut.

La valeur par défaut est à nouveau 0 ce qui signifie que l’ombre n’est pas décalée verticalement (elle est centrée verticalement par rapport à la forme et se situe derrière elle).

La propriété shadowBlur permet de définir le flou Gaussien, c’est-à-dire la dispersion de l’ombre. La valeur par défaut est 0. Plus la valeur est grande, plus l’ombre sera étendue autour de la forme. Le flou Gaussien est créé en mélangeant la couleur de l’ombre et celle du fond ce qui signifie que plus l’ombre est éloignée de la forme, plus sa couleur se rapproche de celle du fond.

Finalement, la propriété shadowColor permet d’indiquer la couleur de l’ombre. Notez que si on définit une couleur semi transparente avec strokeStyle ou fillStyle, l’ombre créée héritera également de cette semi-transparence.

See the Pen
Cours JavaScript 15.5.3
by Pierre (@pierregiraud)
on CodePen.

Laisser un commentaire