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:
TranslationX
undTranslationY
Scale
Rotation
,RotationX
undRotationY
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 SKCanvasView
abgeleitet 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.