Ist es möglich, zu zeichnen, die auf mehrere Leinwände auf einmal?
Alle meine Leinwand zeichnen-Funktionen starten, so etwas wie dieses:
function drawMe(){
var canvas = document.getElementById('canvas-id');
var ctx = null;
ctx = canvas.getContext('2d');
...
}
Allerdings will ich jetzt ziehen Sie das gleiche Bild auf eine (variable) Anzahl von Leinwänden, gibt es eine alternative zu getElementById()
(vielleicht in jQuery?) kann verwendet werden, um leicht greifen mehr als eine auf einmal?
Dank!
Josh
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zeichnung auf mehrere Leinwände, die extrem ineffizient, weil rendering ist eine der teuersten Operationen, die Sie tun können.
was Sie tun möchten, ist die Verwendung von Puffer. Sie können ziehen Sie einfach von einer Leinwand zur anderen.
hier ein fiddle.
denken Sie daran, Sie müssen nur anrufen
ctx.drawImage
einmal, nachdem Sie fertig sind mit allen Zeichnung auf der ersten Leinwand.Mit jQuery, wenn Sie $('.bla'), werden alle Elemente der Klasse 'blah'. Also, wenn Sie geben alle Ihre Leinwände, die Klasse konnte lediglich Durchlaufen Sie alle und ziehen auf die jeweils an dieser Stelle.
Es ist ideal, um all die Zusammenhänge nur einmal, also, es sei denn
drawMe
wird nur einmal aufgerufen, Sie sollten sammeln alle Kontexte auf, die nur einmal und dann übergeben Sie dieses array indrawMe
jedes mal, wenn es aufgerufen wird.Interessant... ich bin sicher, es ist nicht die beste Lösung (ich bin mir nicht ganz sicher, es wird funktionieren!), und Sie übernimmt eine Klasse, die zu identifizieren, die Ihre Leinwand, aber versuchen Sie dies:
Wenn Sie zeichnen ein Komplexes Bild auf mehrere Leinwände, könnte es besser sein:
drawImage()
(das kann eine Leinwand parameter).Diese Weise können Sie einfach kopieren Sie die Pixel im Bild eher als das zeichnen etwas kompliziert immer wieder. Wenn es nur ein einziges Bild, obwohl, ist es wahrscheinlich besser, nur zu zeichnen, die direkt wie die anderen Antworten vorschlagen.
Geben Sie jedem Bild eine Klasse und eine Schleife durch jedes canvas-Element mit der Klasse.