Transformaciones de SkiaSharp
Más información sobre las transformaciones para mostrar gráficos de SkiaSharp
SkiaSharp admite transformaciones de gráficos tradicionales que se implementan como métodos del SKCanvas objeto . Matemáticamente, las transformaciones modifican las coordenadas y los tamaños que se especifican en las funciones de dibujo a medida que se representan SKCanvas los objetos gráficos. Las transformaciones suelen ser prácticas para dibujar gráficos repetitivos o para animaciones. Algunas técnicas, como la rotación de mapas de bits o texto, no son posibles sin el uso de transformaciones.
Las transformaciones de SkiaSharp admiten las siguientes operaciones:
- Traducir para cambiar las coordenadas de una ubicación a otra
- Escalado para aumentar o disminuir coordenadas y tamaños
- Girar para girar coordenadas alrededor de un punto
- Sesgo para desplazar las coordenadas horizontal o verticalmente para que un rectángulo se convierta en un paralelismo
Se conocen como transformaciones afín. Las transformaciones afín siempre conservan las líneas paralelas y nunca hacen que una coordenada o un tamaño se vuelvan infinitos. Un cuadrado nunca se transforma en nada que no sea un paralelismo y un círculo nunca se transforma en nada que no sea una elipse.
SkiaSharp también admite transformaciones no afín (también denominadas transformaciones projectiveo perspective) basadas en una matriz de transformación estándar de 3 por 3. Una transformación no afín permite transformar un cuadrado en cualquier cuadrículo convexa, que es una figura de cuatro lados con todos los ángulos interiores inferiores a 180 grados. Las transformaciones no afín pueden hacer que las coordenadas o tamaños se vuelvan infinitos, pero son vitales para los efectos 3D.
Diferencias entre SkiaSharp Xamarin.Forms y transformaciones
Xamarin.Forms también admite transformaciones similares a las de SkiaSharp. La Xamarin.FormsVisualElement clase define las siguientes propiedades de transformación:
- _VisualElement_TranslationX" data-linktype="absolute-path">
TranslationXand Xamarin_FormsTranslationX_VisualElement_TranslationY" data-linktype="absolute-path">TranslationY - _VisualElement_Scale" data-linktype="absolute-path">
Scale - Xamarin_Forms _VisualElement_Rotation" data-linktype="absolute-path">
Rotation, Xamarin_FormsRotation_VisualElement_RotationX" data-linktype="absolute-path">RotationXy Xamarin_Forms _VisualElement_RotationY" data-linktype="absolute-path">RotationY
Las RotationX propiedades y son RotationY transformaciones de perspectiva que crean efectos cuasi-3D.
Hay varias diferencias fundamentales entre las transformaciones y transformaciones de SkiaSharp: Xamarin.Forms
La primera diferencia es que las transformaciones de SkiaSharp se aplican a todo el objeto mientras que las transformaciones se SKCanvasXamarin.Forms aplican a VisualElement derivados individuales. (Puede aplicar las transformaciones al propio objeto, porque deriva de , pero dentro de , se aplican las transformaciones Xamarin.FormsSKCanvasViewSKCanvasViewVisualElementSKCanvasView skiaPliquenrp).
Las transformaciones de SkiaSharp son relativas a la esquina superior izquierda de mientras que las transformaciones son relativas a la esquina superior izquierda de a la que SKCanvasXamarin.Forms se VisualElement aplican. Esta diferencia es importante al aplicar transformaciones de escalado y rotación porque estas transformaciones siempre son relativas a un punto determinado.
La gran diferencia es que las transformaciones de SSharp son métodos, mientras que las transformaciones son propiedades. Se trata de una diferencia semántica más allá de la diferencia sintáctica: las transformaciones de SkiaSharp realizan una operación mientras las Xamarin.Forms transformaciones establecen un estado. Las transformaciones de SkiaSharp se aplican a los objetos gráficos dibujados posteriormente, pero no a los objetos gráficos que se dibujan antes de aplicar la transformación. Por el contrario, una transformación se aplica a un elemento representado previamente en Xamarin.Forms cuanto se establece la propiedad . Las transformaciones de SkiaSharp son acumulativas a medida que se llama a los métodos. Xamarin.Forms Las transformaciones se reemplazan cuando la propiedad se establece con otro valor.
Todos los programas de ejemplo de esta sección aparecen en la sección Transformaciones de SkiaSharp del programa SkiaSharpFormsDemos. El código fuente se puede encontrar en la carpeta Transformaciones de la solución.
Transformación de traslación
Aprenda a usar la transformación de traducción para desplazar los gráficos de SkiaSharp.
Transformación de escala
Descubra la transformación de escala de SkiaSharp para escalar objetos a varios tamaños.
Transformación de rotación
Explore los efectos y animaciones posibles con la transformación de rotación de SkiaSharp.
Transformación de sesgo
Vea cómo la transformación de sesgo puede crear un objeto gráfico inclinado.
Transformaciones de matriz
Profundice en las transformaciones de SkiaSharp con la versátil matriz de transformación.
Manipulaciones táctiles
Use transformaciones de matriz para implementar manipulaciones táctiles para arrastrar, escalar y cambiar.
Transformaciones no afines
Vaya más allá del oridinario con efectos de transformación no afín.
Giro 3D
Use transformaciones no afín para girar objetos 2D en el espacio 3D.
Descarga del ejemplo