Ich habe Code, der eine Reihe von Bildern in versteckte Img-Elemente lädt und dann eine Javascript-Schleife, die jedes Bild auf der Leinwand platziert. Ich möchte jedoch jedes Bild so beschneiden, dass es ein Kreis ist, wenn es auf der Leinwand platziert wird.Können Sie mehrere Ausschnittbereiche in einem HTML-Canvas haben?
Meine Schleife sieht wie folgt aus:
$$('#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();
});
Problem ist nur das erste Bild gezeichnet (oder ist sichtbar).
Wenn ich den Ausschnitt Logik entfernen:
$$('#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);
});
Dann werden alle meine Bilder gezeichnet werden.
Gibt es eine Möglichkeit, jedes Bild individuell zu beschneiden?
Ich habe versucht, die Clipping-Bereich auf die gesamte Leinwand zwischen den Bildern zurückgesetzt, aber das hat nicht funktioniert.
Speichern/Wiederherstellen überprüfen - das war es! ich danke dir sehr. nicht sicher, aber über Ihre Empfehlung, die Bilder anders zu zeichnen. Der Drawimage-Code funktioniert so, wie ich ihn jetzt habe, was wäre der Vorteil, den von Ihnen bereitgestellten Code zu verwenden? – emh
Das ist einfach, Sie müssen nicht alle Image-Dateien auf der Seite hinzufügen. Quelltext in Image() -Klasse anzeigen wird genug. Vorteil der Entfernung dieser ermöglicht Ihre Seite nicht diese Bilder laden auf Seite. Es ist Seite laden (Leistung) Zeit wir reden über :) – Myra
Das Bild ist nicht richtig für mich Clipping .. – CarbonDry