Ich experimentiere ein bisschen mit dem neuen Canvas-Element in HTML.
Ich möchte einfach ein Bild zur Leinwand hinzufügen, aber es funktioniert aus irgendeinem Grund nicht.
Ich habe folgenden Code:
HTML
<canvas id="viewport"></canvas>
CSS
canvas#viewport { border: 1px solid white; width: 900px; }
JS
var canvas = document.getElementById('viewport'),
context = canvas.getContext('2d');
make_base();
function make_base()
{
base_image = new Image();
base_image.src = 'img/base.png';
context.drawImage(base_image, 100, 100);
}
Das Bild existiert und ich bekomme keine JavaScript-Fehler. Das Bild wird einfach nicht angezeigt.
Es muss etwas wirklich Einfaches sein, das ich vermisst habe ...
javascript
html
canvas
PeeHaa
quelle
quelle
context.drawImage(base_image, 0, 0, 200, 200);
. Das würde base_img von der 0px-Position mit einer Zeichenfläche von 200x200px zeichnen.new Image
und mich gefragt, warum mir immer ein vorheriges Bild angezeigt wurde. Selbst wenn ich ein Bild aus einer Variablen lade, muss ich noch warten,onload
bis das passiert. Danke dir!Hier ist der Beispielcode zum Zeichnen von Bildern auf Leinwand.
Im obigen Code ist selectedImage ein Eingabesteuerelement, mit dem Bilder auf dem System durchsucht werden können. Weitere Details zum Beispielcode zum Zeichnen von Bildern auf Leinwand unter Beibehaltung des Seitenverhältnisses:
http://newapputil.blogspot.in/2016/09/show-image-on-canvas-html5.html
quelle
In meinem Fall habe ich die Funktionsparameter falsch verstanden:
Wenn Sie es erwarten
Sie platzieren das Bild direkt außerhalb der Leinwand mit den gleichen Effekten wie in der Frage beschrieben.
quelle
Sie müssen .onload verwenden
Hier ist der Grund
Wenn Sie das Bild zuerst laden, nachdem die Leinwand bereits erstellt wurde, kann die Leinwand nicht alle Bilddaten zum Zeichnen des Bildes übergeben. Sie müssen also zuerst alle Daten laden, die mit dem Bild geliefert wurden, und dann können Sie drawImage () verwenden.
quelle