Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Draw - záložka objektu PmgCanvas

Popis:
Definice algoritmů (JavaScript) pro kreslící událost onDraw, která umožňuje kreslení do kreslící plochy CanvasCtx.
Konfigurační položky:
onDrawTato kreslící událost je vyvolána, pokud je potřeba překreslit grafiku tohoto objektu.
Parametry:
pEvent(Object) Reference na objekt popisující podrobněji informace o dané události.
pEvent.GetCtx(state)(Object) Vrací objekt CanvasCtx, který představuje kreslící plochu. Význam parametru state:
0 - Získá se vždy prázdná kreslící plocha, případný existující obsah je vyprázdněn. Kreslí se vždy znovu všechno, co má být vidět.
1 - Získá se kreslící plocha v aktuálním stavu, takže případný existující obsah zůstane zachován. Takto je umožněno přírustkové kreslení, například průběh proměnné, kdy se kreslí jenom nový bod. To, zda kreslící plocha je neinicializovaná (prázdná) nebo už obsahuje grafický obsah z minula se dá poznat pomocí metody pEvent.CtxExt.isReset().
pEvent.GetVar()(Object) Vrací proměnnou Pmg objektu v záložce "Proměnné" se zadaným názvem name. Viz PmgObject.Vars.
pEvent.GetParentVar()(Object) Vrací proměnnou rodičovského Pmg objektu v záložce "Proměnné" se zadaným názvem name. Musí být povolen konfigurátor "V onDraw se bude používat metoda pEvent.GetParentVar()", aby byly přístupné proměnné rodičovského objektu. Viz PmgObject.Vars.
pEvent.CtxDx(Long) Šířka kreslící plochy (v pixelech). Kreslící plocha má stejný rozměr jako objekt PmgCanvas.
pEvent.CtxDy(Long) Výška kreslící plochy (v pixelech).
pEvent.CtxExt(Object) Reference na objekt CanvasCtxExt.
pEvent.Methods(Object) Metody projektanta pro kreslení.
pEvent.ViewerType(Long) Příznak, kde se objekt CanvasCtx kreslí:
0 - vývojový mód
1 - runtime mód (lokální)
2 - runtime mód (Web prohlížeč)
Pomocné metodyProtože některé kresby mohou být složité, je lepší kresbu rozdělit do pomocných projektanských metod kreslení, které lze vytvořit na stejné úrovni jako je událost onDraw.

Pomocné metody kreslení mají stejné parametry jako událost onDraw a navíc mohou mít ještě své parametry. Je doporučeno aby metody měly navíc alespoň jeden parametr ctx, aby si každá metoda nemusela získávat ctx sama - viz příklad:

 

Jedna metoda kreslí stupnici (název například DrawScale), jiná metoda kreslí průběh křivky (název například DrawCurve). V události onDraw pak může být jen jednoduchý skript, který volá dané metody.

JavaScriptVyber a zkopíruj do schránky

var ctx = pEvent.GetCtx(0);
pEvent.Methods.DrawScale(ctx);
pEvent.Methods.DrawCurve(ctx);
Poznámka:
Algoritmy pro kreslení se zde píší vždy v jazyce JavaScript, bez ohledu na nastavení konfigurátoru "Nastavení skriptovacího jazyka" v objektu PmaPanel.
 

Objekt PmgCanvas zajistí automatické vyvolání události onDraw pro překreslení kreslící plochy CanvasCtx v případě potřeby:

1) Pokud je kreslící plocha neinicializovaná (prázdná) po otevření obrazu, po změně velikosti objektu PmgCanvas nebo po zavolání metody CtxReset. V tom případě je kreslící plocha vždy prázdná (průhledná).
2) Pokud se změnily vstupní proměnné (Proměnné) objektu PmgCanvas. Kreslící metoda si může vyžádat buď existující kreslící plochu viz pEvent.GetCtx(1) nebo (běžnější případ) neinicializovanou (prázdnou) kreslící plochu viz pEvent.GetCtx(0).
3) Pokud se změnily proměnné (Proměnné) rodičovského Pmg objektu (pozadí) PmgCanvas (platí pro vnořený objekt - popředí).

Kreslící plocha se tedy překreslí v události onDraw jenom při změně. Pokud nedojde ke změně, pak není nutno kreslící plochu skriptem překreslovat a používá se jeho zapamatovaná hodnota. Událost onDraw má přístup pouze k hodnotám lokálních proměnných (Proměnné) objektu PmgCanvas, které tak představují datové rozhraní pro kreslící funkci. Dále může využívat objekt Pm a objekt kreslící plochy CanvasCtx. Skriptové rozhraní objektu CanvasCtx zpřístupňuje většinu metod a vlastností pro 2D kreslení používaných v HTML5 v tágu <canvas>.

Viz také:
- CanvasCtx (objekt)
- PmgCanvas (objekt)

Historie:
Pm8.02.05: Vytvořeno
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice