3 votes

Comment effacer une région de forme polygonale dans un élément canvas ?

J'ai utilisé la fonction clearRect, mais je n'ai pas trouvé l'équivalent pour les polygones. J'ai naïvement essayé :

ctx.fillStyle = 'transparent';
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(100,50);
ctx.lineTo(50, 100);
ctx.lineTo(0, 90);
ctx.closePath();
ctx.fill();

Mais cela ne fait que dessiner une région transparente et n'a aucun effet sur ce qui est déjà présent. Existe-t-il un moyen de nettoyer les régions des polygones à l'intérieur de l'élément canvas ?

15voto

Jonas Points 22309

Vous pouvez utiliser la composition avec l'opération définie à 'destination-out' pour cela :

ctx.globalCompositeOperation = 'destination-out';
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(100,50);
ctx.lineTo(50, 100);
ctx.lineTo(0, 90);
ctx.closePath();
ctx.fill();

Exemple:

entrer la description de l'image ici

Essayez-le sur jsFiddle

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X