Freigeben über


SkiaSharp-Transformationen

Informationen zu Transformationen für die Anzeige von SkiaSharp-Grafiken

SkiaSharp unterstützt herkömmliche Grafiktransformationen, die als Methoden des SKCanvas Objekts implementiert werden. Mathematische Transformationen ändern die Koordinaten und Größen, die Sie in SKCanvas Zeichnungsfunktionen angeben, während die grafischen Objekte gerendert werden. Transformationen eignen sich häufig zum Zeichnen sich wiederholender Grafiken oder für Animationen. Einige Techniken , z. B. das Drehen von Bitmaps oder Text, sind ohne die Verwendung von Transformationen nicht möglich.

SkiaSharp-Transformationen unterstützen die folgenden Vorgänge:

  • Übersetzen , um Koordinaten von einer Position in eine andere zu verschieben
  • Skalieren , um Koordinaten und Größen zu vergrößern oder zu verkleinern
  • Drehen, um Koordinaten um einen Punkt zu drehen
  • Verzerren , um Koordinaten horizontal oder vertikal zu verschieben, sodass ein Rechteck zu einem Parallelogramm wird

Diese werden als affine Transformationen bezeichnet. Affine Transformationen behalten immer parallele Linien bei und bewirken niemals, dass eine Koordinate oder Größe unendlich wird. Ein Quadrat wird niemals in etwas anderes als ein Parallelogramm umgewandelt, und ein Kreis wird nie in einen anderen Als eine Auslassungspunkte umgewandelt.

SkiaSharp unterstützt auch nicht affine Transformationen (auch projektive oder perspektivische Transformationen genannt) basierend auf einer standardmäßigen 3:3-Transformationsmatrix. Eine nicht affine Transformation ermöglicht eine Umwandlung eines Quadrats in ein beliebiges konvexes Quadrilateral, bei dem es sich um eine vierseitige Figur mit allen Innenwinkeln handelt, die kleiner als 180 Grad sind. Nicht affine Transformationen können dazu führen, dass Koordinaten oder Größen unendlich werden, aber sie sind für 3D-Effekte von entscheidender Bedeutung.

Unterschiede zwischen SkiaSharp und Xamarin.Forms Transformationen

Xamarin.Forms unterstützt auch Transformationen, die denen in SkiaSharp ähneln. Die Xamarin.FormsVisualElement Klasse definiert die folgenden Transformationseigenschaften:

Die RotationX Und RotationY Eigenschaften sind perspektivische Transformationen, die quasi-3D-Effekte erzeugen.

Es gibt mehrere wichtige Unterschiede zwischen SkiaSharp-Transformationen und Xamarin.Forms Transformationen:

Der erste Unterschied besteht darin, dass SkiaSharp-Transformationen auf das gesamte SKCanvas Objekt angewendet werden, während die Xamarin.Forms Transformationen auf einzelne VisualElement Ableitungen angewendet werden. (Sie können die Xamarin.Forms Transformationen auf das SKCanvasView Objekt selbst anwenden, da SKCanvasView sie von VisualElement, aber darin SKCanvasViewabgeleitet sind, die SkiaSkarp-Transformationen angewendet werden.)

Die SkiaSharp-Transformationen sind relativ zur oberen linken Ecke der SKCanvas Transformationen Xamarin.Forms relativ zur oberen linken Ecke der VisualElement Angewendeten. Dieser Unterschied ist beim Anwenden von Skalierungs- und Drehungstransformationen wichtig, da diese Transformationen immer relativ zu einem bestimmten Punkt sind.

Der wirklich große Unterschied besteht darin, dass SKiaSharp-Transformationen Methoden sind, während die Xamarin.Forms Transformationen Eigenschaften sind. Dies ist ein semantischer Unterschied über den syntaktischen Unterschied hinaus: SkiaSharp-Transformationen führen einen Vorgang aus, während Xamarin.Forms Transformationen einen Zustand festlegen. SkiaSharp-Transformationen gelten für anschließend gezeichnete Grafikobjekte, jedoch nicht für Grafikobjekte, die vor dem Anwenden der Transformation gezeichnet werden. Im Gegensatz dazu wird eine Xamarin.Forms-Transformation auf ein zuvor gerendertes Element angewendet, sobald die Eigenschaft festgelegt ist. SkiaSharp-Transformationen sind kumulativ, da die Methoden aufgerufen werden; Xamarin.Forms Transformationen werden ersetzt, wenn die Eigenschaft mit einem anderen Wert festgelegt wird.

Alle Beispielprogramme in diesem Abschnitt werden im Abschnitt "SkiaSharp Transforms" des Beispielprogramms angezeigt. Quellcode befindet sich im Ordner "Transformationen" der Lösung.

Die Verschiebungstransformation

Erfahren Sie, wie Sie die Übersetzungstransformation verwenden, um SkiaSharp-Grafiken zu verschieben.

Die Skalierungstransformation

Entdecken Sie die SkiaSharp-Skalierungstransformation zum Skalieren von Objekten auf verschiedene Größen.

Die Drehungstransformation

Erkunden Sie die Effekte und Animationen, die mit der SkiaSharp-Drehtransformation möglich sind.

Die Scherungstransformation

Erfahren Sie, wie die schiefe Transformation gekipptes grafisches Objekt erstellen kann.

Matrixtransformationen

Tauchen Sie tiefer in SkiaSharp-Transformationen mit der vielseitigen Transformationsmatrix ein.

Manipulationen durch Toucheingaben

Verwenden Sie Matrixtransformationen, um Fingereingabemanipulationen zum Ziehen, Skalieren und Drehen zu implementieren.

Nicht affine Transformationen

Gehen Sie über das Oridinär mit nicht affinen Transformationseffekten hinaus.

3D-Drehung

Verwenden Sie nicht affine Transformationen, um 2D-Objekte im 3D-Raum zu drehen.