Trasformazioni di SkiaSharp
Informazioni sulle trasformazioni per la visualizzazione della grafica SkiaSharp
SkiaSharp supporta trasformazioni grafiche tradizionali implementate come metodi dell'oggetto SKCanvas
. Matematicamente, le trasformazioni modificano le coordinate e le dimensioni specificate nelle SKCanvas
funzioni di disegno durante il rendering degli oggetti grafici. Le trasformazioni sono spesso utili per disegnare grafica ripetitiva o per l'animazione. Alcune tecniche, ad esempio la rotazione di bitmap o testo, non sono possibili senza l'uso di trasformazioni.
Le trasformazioni SkiaSharp supportano le operazioni seguenti:
- Traduci per spostare le coordinate da una posizione a un'altra
- Ridimensionare per aumentare o ridurre le coordinate e le dimensioni
- Ruotare per ruotare le coordinate intorno a un punto
- Asimmetria per spostare le coordinate orizzontalmente o verticalmente in modo che un rettangolo diventi un parallelogramma
Queste trasformazioni sono note come trasformazioni affine . Le trasformazioni affine mantengono sempre linee parallele e non causano mai una coordinata o una dimensione diventano infinite. Un quadrato non viene mai trasformato in qualcosa di diverso da un parallelogramma e un cerchio non viene mai trasformato in qualcosa di diverso da un'ellisse.
SkiaSharp supporta anche trasformazioni non affine (dette anche trasformazioni progettive o prospettiche ) basate su una matrice di trasformazione standard 3-by-3. Una trasformazione non affine consente a un quadrato di essere trasformato in qualsiasi quadrilatero convesso, che è una figura a quattro lati con tutti gli angoli interni inferiori a 180 gradi. Le trasformazioni non affine possono causare coordinate o dimensioni infinite, ma sono fondamentali per gli effetti 3D.
Differenze tra SkiaSharp e Xamarin.Forms trasformazioni
Xamarin.Forms supporta anche trasformazioni simili a quelle in SkiaSharp. La Xamarin.FormsVisualElement
classe definisce le proprietà di trasformazione seguenti:
Le RotationX
proprietà e RotationY
sono trasformazioni prospettiche che creano effetti quasi 3D.
Esistono diverse differenze cruciali tra trasformazioni e Xamarin.Forms trasformazioni SkiaSharp:
La prima differenza è che le trasformazioni SkiaSharp vengono applicate all'intero SKCanvas
oggetto mentre le Xamarin.Forms trasformazioni vengono applicate a singoli VisualElement
derivati. È possibile applicare le Xamarin.Forms trasformazioni all'oggetto SKCanvasView
stesso, perché SKCanvasView
deriva da VisualElement
, ma all'interno di SKCanvasView
tale , si applicano le trasformazioni SkiaSkarp.
Le trasformazioni SkiaSharp sono relative all'angolo superiore sinistro di SKCanvas
mentre Xamarin.Forms le trasformazioni sono relative all'angolo superiore sinistro dell'oggetto VisualElement
a cui vengono applicate. Questa differenza è importante quando si applicano trasformazioni di ridimensionamento e rotazione perché queste trasformazioni sono sempre relative a un determinato punto.
La differenza veramente importante è che le trasformazioni SKiaSharp sono metodi mentre le Xamarin.Forms trasformazioni sono proprietà. Si tratta di una differenza semantica oltre la differenza sintattica: le trasformazioni SkiaSharp eseguono un'operazione mentre Xamarin.Forms le trasformazioni impostano uno stato. Le trasformazioni SkiaSharp si applicano agli oggetti grafici disegnati successivamente, ma non agli oggetti grafici disegnati prima dell'applicazione della trasformazione. Al contrario, una Xamarin.Forms trasformazione si applica a un elemento di cui è stato eseguito il rendering in precedenza non appena viene impostata la proprietà . Le trasformazioni SkiaSharp sono cumulative quando vengono chiamati i metodi; Xamarin.Forms le trasformazioni vengono sostituite quando la proprietà viene impostata con un altro valore.
Tutti i programmi di esempio in questa sezione vengono visualizzati nella sezione SkiaSharp Transforms del programma di esempio. Il codice sorgente è disponibile nella cartella Transforms della soluzione.
Trasformazione di traslazione
Informazioni su come usare la trasformazione traduci per spostare la grafica SkiaSharp.
Trasformazione di ridimensionamento
Individuare la trasformazione della scala SkiaSharp per ridimensionare gli oggetti in varie dimensioni.
Trasformazione di rotazione
Esplora gli effetti e le animazioni possibili con la trasformazione Ruota skiaSharp.
Trasformazione di inclinazione
Scopri in che modo la trasformazione asimmetria può creare un oggetto grafico inclinato.
Trasformazioni con matrice
Approfondire le trasformazioni SkiaSharp con la matrice di trasformazione versatile.
Manipolazioni tramite tocco
Usare le trasformazioni della matrice per implementare le manipolazioni del tocco per il trascinamento, il ridimensionamento e la rotazione.
Trasformazioni non affini
Andare oltre l'oridinaria con effetti di trasformazione non affine.
Rotazione 3D
Usa trasformazioni non affine per ruotare oggetti 2D nello spazio 3D.