Transformace SkiaSharp
Informace o transformech pro zobrazení grafiky SkiaSharp
SkiaSharp podporuje tradiční grafické transformace, které jsou implementovány jako metody objektu SKCanvas
. Matematické transformace mění souřadnice a velikosti, které zadáte ve kreslicích funkcích při SKCanvas
vykreslení grafických objektů. Transformace jsou často vhodné pro kreslení opakujících se grafik nebo animací. Některé techniky, jako jsou rotující rastrové obrázky nebo text, nejsou možné bez použití transformací.
Transformace SkiaSharp podporují následující operace:
- Přeložit na souřadnice posunu z jednoho umístění do druhého
- Škálování pro zvýšení nebo zmenšení souřadnic a velikostí
- Otočením souřadnic kolem bodu
- Nerovnoměrná distribuce posunu souřadnic vodorovně nebo svisle tak, aby se obdélník stala paralelogramem
Ty se označují jako affinové transformace. Transformace Affine vždy zachovávají paralelní čáry a nikdy nezpůsobí, že souřadnice nebo velikost budou nekonečné. Čtverec se nikdy nepřevedí na nic jiného než paralelogram a kruh se nikdy nepřevedí na nic jiného než tři tečky.
SkiaSharp také podporuje neffineové transformace (označované také jako projektové nebo perspektivní transformace) založené na standardní matici transformace 3 po 3. Transformace bez affinu umožňuje přeměnu čtverce na jakýkoli konvexní čtyřúhelník, což je čtyřstranná postava se všemi vnitřními úhly menšími než 180 stupňů. Neffinové transformace můžou způsobit, že souřadnice nebo velikosti budou nekonečné, ale jsou nezbytné pro 3D efekty.
Rozdíly mezi SkiaSharpem a Xamarin.Forms transformacemi
Xamarin.Forms podporuje také transformace podobné transformacím ve SkiaSharpu. Třída Xamarin.FormsVisualElement
definuje následující vlastnosti transformace:
RotationY
A RotationX
vlastnosti jsou perspektivní transformace, které vytvářejí kvazi-3D efekty.
Mezi transformací SkiaSharp a Xamarin.Forms transformací existuje několik zásadních rozdílů:
Prvním rozdílem je, že transformace SkiaSharp se použijí na celý SKCanvas
objekt, zatímco Xamarin.Forms transformace se použijí na jednotlivé VisualElement
deriváty. (Transformace lze použít Xamarin.Forms u samotného objektu SKCanvasView
, protože SKCanvasView
je odvozeno z VisualElement
, ale v rámci toho SKCanvasView
se použije transformace SkiaSkarp.)
Transformace SkiaSharp jsou relativní vzhledem k levému hornímu rohu SKCanvas
transformací Xamarin.Forms vzhledem k levému hornímu rohu VisualElement
, na který se použijí. Tento rozdíl je důležitý při použití transformací škálování a otočení, protože tyto transformace jsou vždy relativní vzhledem k určitému bodu.
Opravdu velký rozdíl spočívá v tom, že transformace SKiaSharp jsou metody, zatímco Xamarin.Forms transformace jsou vlastnosti. Jedná se o sémantický rozdíl nad rámec syntaktického rozdílu: Transformace SkiaSharp provádějí operaci, zatímco Xamarin.Forms transformace nastaví stav. Transformace SkiaSharp se vztahují na následně nakreslené grafické objekty, ale ne na grafické objekty, které jsou vykresleny před použitím transformace. Naproti tomu Xamarin.Forms transformace platí pro dříve vykreslený prvek, jakmile je vlastnost nastavena. Transformace SkiaSharp jsou kumulativní, protože metody jsou volány; Xamarin.Forms transformace jsou nahrazeny při nastavení vlastnosti jinou hodnotou.
Všechny ukázkové programy v této části se zobrazí v části Transformace SkiaSharp ukázkového programu. Zdrojový kód najdete ve složce Transforms řešení.
Transformace translace
Naučte se používat transformaci překladu na posun grafiky SkiaSharp.
Transformace měřítka
Objevte transformaci škálování SkiaSharp pro škálování objektů na různé velikosti.
Transformace rotace
Prozkoumejte možné efekty a animace pomocí transformace otáčení SkiaSharp.
Transformace zkosení
Podívejte se, jak transformace zkosení může vytvořit nakloněný grafický objekt.
Maticové transformace
Ponořte se hlouběji do transformací SkiaSharp s univerzální transformační maticí.
Manipulace dotyků
Pomocí maticových transformací můžete implementovat manipulace s dotykovými ovládáními pro přetahování, škálování a otáčení.
Neafinní transformace
Projděte si oridinární efekty bez affinové transformace.
3D otáčení
K otočení 2D objektů ve 3D prostoru použijte nefínové transformace.