Promotic

prepareDrawRect - metoda obiektu CanvasCtxExt

Opis:
Wykona transformację, która określony prostokąt w specjalny sposób przesunie, odwróci oraz przewróci.
Celem tej transformacji jest, by po niej było możliwe w prostszy sposób w danym obszarze rysować oraz by samo przesunięcie, rotacja i przewrócenie wykonała transformacja.
Składnia:
Empty prepareDrawRect(Object mMap)
Parametry:
mMap(Object) Obiekt typu PmMap, w którym są wytworzone następujące właściwości określające sposób transformacji:
x (obowiązkowe) - Pozycja X lewego górnego rogu prostokąta (w pikselach)
y (obowiązkowe) - Pozycja Y lewego górnego rogu prostokąta (w pikselach)
dx (obowiązkowe) - Szerokość prostokąta (w pikselach)
dy (obowiązkowe) - Wysokość prostokąta (w pikselach)
rotateAngle (opcjonalne) - Kąt rotacji obrazka w stopniach (środek rotacji znajduje się w środku określonego prostokąta). Przykłady:
0 (domyślnie) - nie odwracać
90 - odwróć o kąt 90°
45 - odwróć o kąt 45°
-45 = 270 - odwróć o kąt 270°
10.125 - odwróć o kąt 10.125°
flip (opcjonalne) - Przewrócenie rysowania.
0 (domyślnie) - nie przewracać
1 - przewrócić wobec osi pionowej
Notatka:
Przy wywołaniu tej metody w obiekcie mMap zostanie zdefiniowany prostokąt w obszarze do rysowania przy pomocy właściwości x, y, dx, dy. Dalej można w mMap definiować co chcemy wykonać z danym prostokątem: czy go należy odwrócić (rotateAngle) oraz przewrócić (flip). Metoda wykona transformację w następujący sposób: lewy górny róg przesunie na współrzędne (0,0) oraz wykona wymagane odwrócenie oraz przewrócenie. Następnie do obiektu mMap doda właściwości drawDx oraz drawDy. Jeżeli później będzie się rysować w prostokącie z lewym górnym rogiem (0,0) i wymiarach mMap.drawDx oraz mMap.drawDy, wtedy podczas rysowania już nie trzeba zwracać uwagę na przesuwanie, odwracanie oraz przewracanie.

Odwracanie w kwadracie jest względnie proste (można to wykonać na przykład przy pomocy transformacji rotate) ale odwracanie w prostokącie metoda ta wykonuje tak, żeby podczas odwrócenia o 90° obrazek zostanie zdeformowany (rozciągnięty lub skrócony).
Metoda ta jest specjalnym rodzajem metody transform. W przypadku, że projektant chce wykorzystać przy pomocy metody transform, wtedy obliczanie odwracania deformacyjnego jest względnie matematycznie trudne i skomplikowane.

Metoda ta działa także w Web panelach.
Przykład:
Wyodrębni obszar do rysowania, w którym ostateczny rysunek zostanie odwrócony wprawo o 45° oraz pionowo przewrócony
Zmienna ctx reprezentuje obszar do rysowania (CanvasCtx). Ta jest ustawiana w karcie "Draw" na początku skryptu rysującego zdarzenia onDraw w następujący sposób:
 
var ctx = pEvent.GetCtx(1);
JavaScriptWybierz oraz skopiuj do schowka

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);
// pozyskanie nowych współrzędnych obszaru dx oraz dy dla transformacji
var dx = mMap.drawDx;
var dy = mMap.drawDy;
// ...cokolwiek teraz zostanie wyrysowane w obszarze 0 - dx oraz 0 - dy, zostanie w ostatecznym rysunku przesunięte, odwrócone oraz przewrócone.

Historia:
Pm8.03.04: Wytworzono
© MICROSYS, spol. s r.o.