Promotic

prepareDrawRect - metoda objektu CanvasCtxExt

Popis:
Provede transformaci, která zadaný obdélník speciálně posune, otočí a překlopí.
Cílem této transformace je, aby po této transformaci se kreslilo do dané oblasti jednoduše a aby o posunutí, otočení a překlopení se postarala tato transformace.
Syntaxe:
Empty prepareDrawRect(Object mMap)
Parametry:
mMap(Object) Objekt typu PmMap, ve kterém jsou vytvořeny následující vlastnosti specifikující způsob transformace:
x (povinné) - Pozice X levého horního rohu obdélníku (v pixelech)
y (povinné) - Pozice Y levého horního rohu obdélníku (v pixelech)
dx (povinné) - Šířka obdélníku (v pixelech)
dy (povinné) - Výška obdélníku (v pixelech)
rotateAngle (nepovinné) - Úhel otočení obrázku ve stupních (střed otáčení je ve středu definovaného obdélníku). Příklady:
0 (přednastaveno) - neotáčet
90 - otočit o úhel 90°
45 - otočit o úhel 45°
-45 = 270 - otočit o úhel 270°
10.125 - otočit o úhel 10.125°
flip (nepovinné) - Převracení kreslení.
0 (přednastaveno) - nepřevracet
1 - převrátit ve vertikální ose
Poznámka:
Při volání této metody se v objektu mMap definuje obdélník v kreslící ploše pomocí vlastností x, y, dx, dy. Dále lze v mMap definovat co chceme s obdélníkem dělat: zda ho chceme otočit (rotateAngle) a překlopit (flip). Metoda provede transformaci souřadnic: levý horní roh posune na souřadnice (0,0) a provede požadované otočení a překlopení. Dále tato transformace do objektu mMap přidá vlastnosti drawDx a drawDy. Pokud se následně bude kreslit do obdélníku s levým horním rohem (0,0) a rozměry mMap.drawDx a mMap.drawDy, pak se při kreslení už nemusí dbát na posouvání, otáčení a překlápění.

Otáčení ve čtverci je relativně snadné (lze to provést například také transformací rotate) ale otáčení v obdélníku provádí tato metoda tak, aby při otočení o úhel 90° se obrázek zdeformoval (natáhl nebo zkrátil).
Tato metoda je jen speciálním případem metody transform. Kdyby však chtěl projektant toto provést metodou transform, bylo by to velmi složité a výpočty deformačního otáčení jsou relativně matematicky náročné.

Tato metoda je funkční i ve Web obrazech.
Příklad:
Vymezí plochu pro kreslení, ve které bude výsledný obrázek otočen vpravo o 45° a svisle převrácen
Proměná ctx reprezentuje kreslící plochu (CanvasCtx). Ta se nastaví v kartě "Draw" na začátku skriptu kreslící události onDraw takto:
 
var ctx = pEvent.GetCtx(1);
JavaScriptVyber a zkopíruj do schránky

var ctx = pEvent.GetCtx(0);
// ...
var mMap = Pm.CreatePmMap();
mMap.x = 10;
mMap.y = 10;
mMap.dx = 90;
mMap.dy = 90;
mMap.rotateAngle = 45;
mMap.flip = 1;
pEvent.CtxExt.prepareDrawRect(mMap);
// získání nových souřadnic plochy dx a dy po transformaci
var dx = mMap.drawDx;
var dy = mMap.drawDy;
// ...cokoli se teď bude kreslit do oblasti 0 - dx a 0 - dy, tak ve výsledné kresbě bude posunuto, překlopeno a otočeno.

Historie:
Pm8.03.04: Vytvořeno
© MICROSYS, spol. s r.o.