J'ai un code qui charge un tas d'images dans des éléments img cachés, puis une boucle Javascript qui place chaque image sur la toile. Cependant, je veux découper chaque image de sorte qu'il s'agisse d'un cercle lorsqu'il est placé sur la toile.Pouvez-vous avoir plusieurs régions de découpage dans un canevas HTML?
Ma boucle ressemble à ceci:
$$('#avatars img').each(function(avatar) {
var canvas = $('canvas');
var context = canvas.getContext('2d');
var x = Math.floor(Math.random() * canvas.width);
var y = Math.floor(Math.random() * canvas.height);
context.beginPath();
context.arc(x+24, y+24, 20, 0, Math.PI * 2, 1);
context.clip();
context.strokeStyle = "black";
context.drawImage(document.getElementById(avatar.id), x, y);
context.stroke();
});
Le problème est, seule la première image est dessinée (ou est visible).
Si je supprime la logique de découpage:
$$('#avatars img').each(function(avatar) {
var canvas = $('canvas');
var context = canvas.getContext('2d');
var x = Math.floor(Math.random() * canvas.width);
var y = Math.floor(Math.random() * canvas.height);
context.drawImage(document.getElementById(avatar.id), x, y);
});
Alors toutes mes images sont tirées.
Existe-t-il un moyen d'écrêter chaque image individuellement?
J'ai essayé de réinitialiser la zone d'écrêtage pour qu'elle soit la toile entière entre les images mais cela n'a pas fonctionné.
sauvegarde/restauration - c'est tout! Merci beaucoup. pas sûr cependant de votre recommandation de dessiner les images différemment. Le code de drawimage fonctionne bien comme je l'ai maintenant, quel serait l'avantage d'utiliser le code que vous avez fourni? – emh
C'est simple, vous n'avez pas besoin d'ajouter tous les fichiers image dans la page.Showing source dans la classe Image() sera suffisant.Bénéfice de supprimer ceux permet à votre page ne charge pas ces images sur le chargement de la page.Il est le temps de chargement de la page nous parlons de :) – Myra
L'image ne coupe pas correctement pour moi .. – CarbonDry