Promotic
WikipediaLinkedInYoutubeTwitterFacebook

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:
prepareDrawRect(oMap As Object)
Volání:
pEvent.CtxExt.prepareDrawRect(oMap);
Parametry:
oMap(Object) Objekt typu PmMap, ve kterém jsou vytvořeny následující vlastnosti specifikující způsob transformace:
x (povinné) - X pozice levého horního rohu obdélníku (v pixelech)
y (povinné) - Y pozice 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 oMap definuje obdélník v kreslící ploše pomocí vlastností x, y, dx, dy. Dále lze v oMap definovat co chceme s obdélníkem dělat: zda ho chceme otočit (rotateAngle) a překlopit (flip). Metoda provede takovou transformaci souřadnic, že levý horní roh posune na souřadnice (0,0) a provede požadované otočení a překlopení. Dále tato transformace do objektu oMap 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 oMap.drawDx a oMap.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é.

 
Metodu lze volat i v událostech grafických prvků pro Web Obrazy.
Příklad:
Vymezí plochu pro kreslení, ve které bude výsledný obraz otočen vpravo o 45° a vertikálně převrácen
...
oMap.x = 10;
oMap.y = 10;
oMap.dx = 90;
oMap.dy = 90;
oMap.rotateAngle = 45;
oMap.flip = 1;
pEvent.CtxExt.prepareDrawRect(oMap);
// získání nových souřadnic plochy dx a dy po transformaci
var dx = oMap.drawDx;
var dy = oMap.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.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice