Sdílet prostřednictvím


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 SKCanvasViewse 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.