siehe auch Developer.Mozilla
Siehe auch HTML living
Standard the canvas element
Siehe auch w3schools_canvas
Siehe auch w3schools canvas
Referenz
siehe auch
ZIMJS
Ein canvas Element ist ein Rechteck, in dem man Grafiken darstellen kann, also eine Art Zeichenbrett. Eigentlich ist es mehr als nur eine Leinwand, denn hier lassen sich mittels Javascript Animationen und interaktive Anwendungen bis hin zu kleinen Spielen erzeugen. Canvas springt in die Lücke, die Flash hinterlassen hat.
Das Prgramm AnimateCC (Nachfolger von Flash) bietet die Möglichkeit etwas in HTML / Canvas zu erstellen. Siehe auch das Framework ZIMJS , mit vielen spielerischen Beispielen und Tutorials, um einen Eindruck zu bekommen, was hier alles möglich ist.
<canvas width="300" height="225"></canvas>
Das canvas Element selbst ist unsichtbar. Es folgt ein canvas Element mit Rahmen in CSS.
<canvas width="200" height="100"
style="border:1px solid #000000;">
</canvas>
Man kann mehrere canvas Elemente auf einer Seite erzeugen. Um diese anzusprechen kann man ihnen eine id verpassen.
<canvas id="a" width="300"
height="225"></canvas>
Auf diese Weise kann man es im DOM finden.
var a_canvas = document.getElementById("a");
Auf folgende Weise kann man mittels Javascript etwas zeichnen.
<script>
function draw_a() {
var a_canvas = document.getElementById("a");
var a_context = a_canvas.getContext("2d");
a_context.fillRect(50, 25, 150, 100);
}
</script>
Erzeuge ein drawing- context- Objekt mit der Methode getContext darin die Parameterwertzuweisgung "2d". Weitere getContext Parameter findet man hier.
Hier einige Methoden von drawing context (mehr dazu siehe unten):
fillStyle | CSS Farbe, Muster, Farbverlauf | |
fillRect(x, y, widht, height) | Rechteck, linke obere Ecke, Weite Höhe | |
strokeStyle |
color | CSS, Farbe |
gradient | Farbverlaufs Objekt | |
pattern | Muster Objekt | |
strokeRect(x,y,widht, height) | Rechteck ohne Füllfarbe nur Rand im aktullen strokeStyle | |
clearRect(x,y,width, height) | löscht die Pixel in dem Rechteck |
Durch das erneute Setzen der width eines canvas Elements wird der komplette Inhalt gelöscht. Es kann sich dabei um die gleiche Breite handeln.
a_canvas.width = a_canvas.width;
Man kann gerade Linien zeichen mit folgenden beiden Methoden.
moveTo(x, y)
definiert den Startpunkt der Linie.
lineTo(x, y)
zieht eine Linie zum Punkt.
Man sieht die Linie jedoch erst, wenn man eine der ink- Methoden aufruft.
context.strokeStyle = "#eee";
context.stroke();
Es folgt der Quellcode für dieses Canvas Elementes:
<script> var a_canvas = document.getElementById( "myCanvas0" ); var context = a_canvas.getContext( "2d" ); context.beginPath(); context.moveTo( 10, 150 ); context.lineTo( 10, 300 ); context.lineTo( 200, 300 ); context.lineTo( 200, 150 ); context.lineTo( 100, 10 ); context.lineTo( 10, 150 ); context.strokeStyle = "#000000"; context.stroke(); </script>
Im Body an der Stelle, wo das canvas Element erscheinen soll, wird es erzeugt:
<canvas width="300" height="200" id="a">Ihr
Browser unterstützt kein Html 5, oder Javascript.</canvas>
Es folgen einige Beispiele und Methoden
Es wird ein Canvas Element mit id erzeugt.
<canvas id="myCanvas" width="200" height="100"
style="border:1px solid #000000;">
</canvas>
Mittels Javascript werden Methoden aufgerufen.
Javascript | Info |
---|---|
|
Rechteck zeichnen
|
var c=document.getElementById("myCanvas");
|
Pfad, Linien zeichnen
|
var c=document.getElementById("myCanvas"); |
Kreis
|
var c=document.getElementById("myCanvas"); |
Canvas Text
|
var cnvText2 = document.getElementById( "cnvTxt2" ); var ctxTxt2 = cnvTxt2.getContext( "2d" ); ctxTxt2.font = "50px Arial"; ctxTxt2.strokeText( "Hello World", 10, 50 ); |
Text ohne FüllungstrokeText() siehe Mozilla |
|
FarbverlaufEs gibt mehrere Arten von Farberläufen Sieh dazu Developer.Mozilla |
var cnvG = document.getElementById( "cnvGradient" ); var ctxG = cnvG.getContext( "2d" ); const gradient = ctxTxt2.createLinearGradient(20,0,220,0); // Drei Color-Stops werden gesetzt gradient.addColorStop( 0, "green" ); gradient.addColorStop( 0.5, "cyan" ); gradient.addColorStop( 1, "green" ); // Ein fillStyle und ein Rechteck wird gesetzt ctxG.fillStyle = gradient; ctxG.fillRect( 20, 20, 200, 100); |
Linear GradientBei einem Linearem Verlauf gibt man 2 Positionen über x-y Koordinaten an. Wenn man sich zwischen diesen beiden Punkten eine Linie vorstellt, so bestimmt diese Linie Anfang und Ende des Verlaufs sowie die Richtung.
Außerdem muss man ein oder mehrere ColorStops definieren. Die Positionen der Colorstops liegen zwischen 0 und 1. Ein Colorstop auf 0.5 liegt also genau in der Mitte der Linie, die den Verlauf bestimmt. siehe w3schools |
var c=document.getElementById("myCanvas"); |
Radial GradientDer radiale, kreisförmige Verlauf besteht aus 2 definierten Kreisen. Somit ist es möglich, eliptische,
flammenartige Verläufe zu definieren. Am Anfang ist es auch hilfreich, wenn beide Kreise die gleichen Koordinaten haben. So versteht man die beiden Radius Werte besser. Probiere das Beispiel links bei einer Canvas Größe von 200 x 100. Versuch macht klug bei w3schools
|
|
Draw Image
x ist der horzintale Abstand des Bildes von der linken Seite des canvas Man kann das Bild erst dann ansprechen, wenn es geladen ist. Daher werden Methoden wie drawImage() oder fill() erst in der Funktion eingefügt, die mit dem EventHandler onLoad() aufgerufen wird. |
var c = document.getElementById( "myCanvas" ); var ctx = c.getContext( "2d" ); var img = new Image(); img.src = 'canvas/birds1.jpg'; img.onload = function () { var pat = ctx.createPattern( img, "repeat" ); ctx.rect( 0, 0, 200, 200 ); ctx.fillStyle = pat; ctx.fill(); }; |
|
var c=document.getElementById("myCanvas");
|
fillStyle pattern
|
var img=document.getElementById("bird"); |
Wenn man ein Image Objekt erzeugt, indem man auf die id eines Bildes zugreift, sollte auch dann sichergestellt werden, dass das Bild geladen ist. |