Viz: objekt
PmgCanvas.
Objekt
PmgCanvas trvale obsahuje kreslící plochu (rastrový obrázek v paměti -
bitmap) o velikosti
Pmg objektu. Kreslící plocha (objekt
CanvasCtx) je zpřístupněna v události
onDraw (
JavaScript) metodou
pEvent.GetCtx(state). Při fyzickém kreslení objektu do okna PROMOTIC obrazu se použije aktuální zapamatovaný obsah kreslící plochy, nedochází k překreslování kreslící plochy v události
onDraw.
Koncept popředí/pozadí:
Pokud je animovaný 2D obsah složitý, plošně velký, a přitom se některá jeho část často mění, pak dochází ke zbytečnému vytěžování procesoru. Řešením je rozdělit obsah složitého objektu
PmgCanvas na dva objekty
PmgCanvas nad sebou. Na statičtější složitější
pozadí (
background) a dynamické jednodušší
popředí (
foreground,
dynamic).
Pmg objekt představující dynamické popředí se zanoří do statičtějšího pozadí, takže vznikne jeden složený
Pmg objekt. Jedná se o standardní způsob, kterým je řešeno mnoho předkonfigurovaných objektů
PmgCanvas.
Vnořený
Pmg objekt (popředí) může přistupovat i k proměnným
Vars rodičovského
Pmg objektu (pozadí). Při změně proměnných
Vars rodičovského
Pmg objektu (pozadí) je zajištěno překreslení i vnořeného objektu (popředí). Viz konfigurátor "
V onDraw se bude používat metoda pEvent.GetParentVar(sName)".
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 volá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 pouze 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 tagu
<canvas>.
Výhody:
- Kreslení ve skriptu umožňuje podmíněné kreslení, opakované kreslení, přepočítávání, získávání a formátovaní hodnot, (příkazy
if...else,
for, objekt
Pm, lokální proměnné
Proměnné, atd.).
- Je funkční i ve
Web obrazu, kreslení přímo v prohlížečích na klientském počítači, podpora většiny prohlížečů. Vlastnosti a metody pro kreslení jsou v objektu
CanvasCtx. Jedná o standardní
HTML5 tag
<canvas> pro který existuje mnoho příkladů a dokonce online editorů a testerů.
- Rychlejší než
SVG v
PmgRasterImage (lokálně i na Webu) a podporuje i zobrazování textů.
- Při editaci objektu
PmgCanvas včetně jeho kreslící události
onDraw je objekt vykreslován ihned ve vývojovém prostředí
v editoru grafiky.
- Možnost pro projektanty si upravit dodávané předkonfigurované objekty založené na PmgCanvas.
- Na Webu je grafika (kreslící skripty) přímo součástí obrazu, nemusí se stahovat dodatečné soubory s obrázky.