Partager via


Transformations SkiaSharp

En savoir plus sur les transformations pour l’affichage des graphiques SkiaSharp

SkiaSharp prend en charge les transformations graphiques traditionnelles implémentées en tant que méthodes de l’objet SKCanvas . Mathématiquement, les transformations modifient les coordonnées et les tailles que vous spécifiez dans SKCanvas les fonctions de dessin à mesure que les objets graphiques sont rendus. Les transformations sont souvent pratiques pour dessiner des graphiques répétitifs ou pour l’animation. Certaines techniques( telles que la rotation de bitmaps ou de texte) ne sont pas possibles sans l’utilisation de transformations.

Les transformations SkiaSharp prennent en charge les opérations suivantes :

  • Traduire en coordonnées de décalage d’un emplacement à un autre
  • Mettre à l’échelle pour augmenter ou diminuer les coordonnées et les tailles
  • Faire pivoter pour faire pivoter les coordonnées autour d’un point
  • Asymétrie pour décaler les coordonnées horizontalement ou verticalement afin qu’un rectangle devienne un parallélisme

Il s’agit de transformations affine . Les transformations affine conservent toujours les lignes parallèles et ne provoquent jamais l’infini d’une coordonnée ou d’une taille. Un carré n’est jamais transformé en quelque chose d’autre qu’un parallélisme, et un cercle n’est jamais transformé en quelque chose d’autre qu’un ellipse.

SkiaSharp prend également en charge les transformations non affine (également appelées transformations projectives ou de perspective ) basées sur une matrice de transformation standard de 3 à 3. Une transformation non affine permet de transformer un carré en n’importe quel quadrilatère convex, qui est une figure à quatre côtés avec tous les angles intérieurs inférieurs à 180 degrés. Les transformations non affines peuvent entraîner l’infini des coordonnées ou des tailles, mais elles sont vitales pour les effets 3D.

Différences entre SkiaSharp et Xamarin.Forms transformations

Xamarin.Forms prend également en charge les transformations similaires à celles de SkiaSharp. La Xamarin.FormsVisualElement classe définit les propriétés de transformation suivantes :

Les RotationX propriétés et RotationY les transformations de perspective créent des effets quasi-3D.

Il existe plusieurs différences cruciales entre les transformations et Xamarin.Forms les transformations SkiaSharp :

La première différence est que les transformations SkiaSharp sont appliquées à l’objet entier SKCanvas tandis que les Xamarin.Forms transformations sont appliquées à des dérivés individuels VisualElement . (Vous pouvez appliquer les Xamarin.Forms transformations à l’objet SKCanvasView lui-même, car SKCanvasView dérive de VisualElement, mais dans cela SKCanvasView, les transformations SkiaSkarp s’appliquent.)

Les transformations SkiaSharp sont relatives au coin supérieur gauche du SKCanvas moment où Xamarin.Forms les transformations sont relatives au coin supérieur gauche de l’angle VisualElement auquel elles sont appliquées. Cette différence est importante lors de l’application de transformations de mise à l’échelle et de rotation, car ces transformations sont toujours relatives à un point particulier.

La principale différence est que les transformations SKiaSharp sont des méthodes tandis que les Xamarin.Forms transformations sont des propriétés. Il s’agit d’une différence sémantique au-delà de la différence syntactique : les transformations SkiaSharp effectuent une opération pendant que Xamarin.Forms les transformations définissent un état. Les transformations SkiaSharp s’appliquent aux objets graphiques dessinés par la suite, mais pas aux objets graphiques dessinés avant l’application de la transformation. En revanche, une Xamarin.Forms transformation s’applique à un élément précédemment rendu dès que la propriété est définie. Les transformations SkiaSharp sont cumulatives, car les méthodes sont appelées ; Xamarin.Forms les transformations sont remplacées lorsque la propriété est définie avec une autre valeur.

Tous les exemples de programmes de cette section apparaissent dans la section Transformations SkiaSharp de l’exemple de programme. Le code source se trouve dans le dossier Transformations de la solution.

La transformation de traduction

Découvrez comment utiliser la transformation de traduction pour déplacer des graphiques SkiaSharp.

La transformation d’échelle

Découvrez la transformation de mise à l’échelle skiaSharp pour mettre à l’échelle des objets à différentes tailles.

La transformation de rotation

Explorez les effets et les animations possibles avec la transformation de rotation SkiaSharp.

La transformation d’inclinaison

Découvrez comment la transformation d’asymétrie peut créer un objet graphique incliné.

Transformations de matrice

Découvrez plus en détail les transformations SkiaSharp avec la matrice de transformation polyvalente.

Manipulations tactiles

Utilisez des transformations de matrice pour implémenter des manipulations tactiles pour le glissement, la mise à l’échelle et la rotation.

Transformations non affines

Aller au-delà de l’oridinaire avec des effets de transformation non affine.

Rotation 3D

Utilisez des transformations non affine pour faire pivoter des objets 2D dans l’espace 3D.