Condividi tramite


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 SKCanvasViewtale , 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.