Siehe auch Dive into Html 5 / Lets call it Drawing Surface
Siehe auch HTML living Standard the canvas element
Siehe auch w3schools_canvas
Siehe auch w3schools canvas Referenz
siehe auch Canvas / Sheet
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". Ein "3d" gibt es noch nicht.
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 dieses Canvas Elementes Im Headbereich:
<script src="Scripts/modernizr.js"></script>
<script type="text/javascript">
function draw_a() {
if (Modernizr.canvas) {
var a_canvas = document.getElementById("a");
var context = a_canvas.getContext("2d");
context.beginPath();
context.moveTo(10, 10);
context.lineTo(10, 200);
context.lineTo(300, 10);
context.strokeStyle = "#000000";
context.stroke();
} else {
// no native canvas support available :(
document.write("Das Canvas Element wird nicht unterstützt.");
}
}
</script>
Innerhalb des Bodytags, wird die Funktion aufgerufen. Selbstverständlich kann man das auch ohne Funktion machen.
<body onLoad="draw_a()">
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
fillText()
|
var c=document.getElementById("myCanvas"); |
Text ohne FüllungstrokeText() |
|
Gradient FarbverlaufEs gibt 2 Arten linear und radial |
var c=document.getElementById("myCanvas"); |
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");
|
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. |