Promotic
WikipediaLinkedInYoutubeTwitterFacebook

setTransform - metoda objektu CanvasCtx

Popis:
Obnoví současnou transformaci na novou matici. Pak spustí transform().
Syntaxe:
setTransform(a As Long, b As Long, c As Long, d As Long, e As Long, f As Long) As Object
Volání:
ctx.setTransform(a, b, c, d, e, f);
Parametry:
a(Long) Horizontální poměr kreslení
b(Long) Horizontální zkosení kreslení
c(Long) Vertikální zkosení kreslení
d(Long) Vertikální poměr kreslení
e(Long) Horizontální posun kreslení
f(Long) Vertikální posun kreslení
Poznámka:
Transformace umožňují mapovat pozice z jednoho souřadnicového systému do jiného. Umožňuje to kreslení stejného tvaru do různě zvětšeného/zmenšeného, otočeného, posunutého, zrcadlově otočeného 2D prostoru. Je jednodušší transformovat souřadnice 2D prostoru než ručně přepočítavat souřadnice všech objektů pro dosažení stejného efektu. Veškeré transformace pozic jsou definovány 6 měnitelnými hodnotami a, b, c, d, e, f (z celkem 9) transformační matice pro 2D prostor. Výchozí hodnota netransformovaného 2D prostoru je 1, 0, 0, 1, 0, 0 (tzv jednotková matice). Transformační matice je součástí kreslící plochy. Metody save a restore ukládají i tuto transformační matici.

Transformační metody transform, translate, scale nebo rotate ovlivňují některou (nebo všechy) hodnotu transformační matice. Každá z těchto metod zachová aktuální platný stav transformační matice a do něj provede svojí změnu. Tzn. změny jsou kumulativní a sčítají se.

Transformační metoda setTransform naproti tomu nejdříve nastaví právě platnou transformační matici na výchozí hodnotu a nad ní provede transformaci transform. Jako jediná z transformačních metod umožňuje vynulovat kumulované transformace a nastavit novou transformaci bez kumulace.

Viz také:
Příklad:
ctx.fillStyle = "yellow";
ctx.fillRect(0, 0, 250, 100);
ctx.setTransform(1, 0.5, -0.5, 1, 30, 10);
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 250, 100);
ctx.setTransform(1, 0.5, -0.5, 1, 30, 10);
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, 250, 100);
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice