HTML and CSS Reference
In-Depth Information
x y (280/10)*i;
ctx.fillRect(x, y, 20, 20);
}
2.3.6 Transformationen
Zu den von der Canvas-API unterstützten Transformationen zählen Skalierung, Rotation
und Translation. Bevor wir diese Transformationen jedoch anhand kurzer Beispiele
vorstellen, sollten Sie unbedingt mit den Methoden save() und restore() vertraut sein.
canvas.save() speichert den aktuellen Zustand des Canvas auf den Stack, canvas.
restore() stellt den zuletzt gesicherten Zustand wieder her. Zum Zustand des Canvas
gehören dabei:
sämtliche Transformationen, die aktuell angewendet werden,
sämtliche Attribute des Canvas, also strokeStyle , fillStyle , lineWidth etc., sowie
der aktuelle Clipping Path.
save() und restore() erlauben es Ihnen, den aktuellen Zustand zu speichern, eine
Transformation und Zeichenoperationen anzuwenden und dann wieder zu dem alten
Zustand zurückzukehren. Je komplexer Ihre Zeichnungen werden, desto mehr werden
Sie save() und restore() schätzen, da diese Methoden Ihnen ermöglichen, den Über-
blick zu behalten. Sie werden die Funktion der Methoden neben dieser theoretischen
Vorstellung anhand von Beispielen auch praktisch kennenlernen.
Neben den Transformationen scale , rotate und translate erlaubt die Methode
transform() die direkte Veränderung der Transformationsmatrix. Diese Transforma-
tionen werden über die gleichnamigen Methoden angesprochen:
void scale(in float x, in float y);
void rotate(in float angle);
void translate(in float x, in float y);
Die translate()- Methode wird dazu verwendet, den Ursprung des kompletten
Canvas an eine andere Position zu verschieben. Wenn sich der Punkt (0, 0) norma-
lerweise an der oberen linken Ecke des Canvas befindet, befindet er sich nach ange-
wandter translate(100, 100) an Position (100, 100) . Alle nachfolgenden
Zeichenoperationen werden also automatisch von diesem neuen Ursprung aus gezeich-
net. Das folgende Beispiel demonstriert das:
//translate the drawing context
ctx.save();
ctx.translate(100, 100);
ctx.fillText('translated 100,100', 0, 0);
ctx.restore();
Zunächst wird mittels save() der aktuelle Zustand gespeichert. Für eine einzelne
Transformation mit Zeichenoperation wäre das freilich nicht notwendig, es dient hier
jedoch der Demonstration. Im nächsten Schritt wird dann der Ursprung auf den Punkt
(100, 100) gelegt. Der nun mittels fillText() gezeichnete Text wird zwar an Posi-
Search WWH ::




Custom Search