Transformações de SkiaSharp

Saiba mais sobre transformações para exibir gráficos SkiaSharp

O SkiaSharp suporta transformações gráficas tradicionais que são implementadas como métodos do SKCanvas objeto. Matematicamente, as transformações alteram as coordenadas e os tamanhos especificados nas SKCanvas funções de desenho à medida que os objetos gráficos são renderizados. As transformações geralmente são convenientes para desenhar gráficos repetitivos ou para animação. Algumas técnicas — como bitmaps rotativos ou texto — não são possíveis sem o uso de transformações.

As transformações do SkiaSharp suportam as seguintes operações:

  • Traduzir para mudar as coordenadas de um local para outro
  • Dimensionar para aumentar ou diminuir coordenadas e tamanhos
  • Girar para girar as coordenadas em torno de um ponto
  • Incline para deslocar as coordenadas horizontal ou verticalmente para que um retângulo se torne um paralelogramo

Estas são conhecidas como transformações afins . As transformações afins sempre preservam linhas paralelas e nunca fazem com que uma coordenada ou tamanho se torne infinito. Um quadrado nunca é transformado em outra coisa senão um paralelogramo, e um círculo nunca é transformado em outra coisa senão uma elipse.

O SkiaSharp também suporta transformações não afins (também chamadas de transformações projetivas ou de perspectiva ) com base em uma matriz de transformação padrão de 3 por 3. Uma transformação não afim permite que um quadrado seja transformado em qualquer quadrilátero convexo, que é uma figura de quatro lados com todos os ângulos internos inferiores a 180 graus. Transformações não afins podem fazer com que coordenadas ou tamanhos se tornem infinitos, mas são vitais para efeitos 3D.

Diferenças entre SkiaSharp e Xamarin.Forms Transforms

Xamarin.Forms também suporta transformações semelhantes às do SkiaSharp. A Xamarin.FormsVisualElement classe define as seguintes propriedades de transformação:

As RotationX propriedades e RotationY são transformações de perspectiva que criam efeitos quase 3D.

Existem várias diferenças cruciais entre as transformações e Xamarin.Forms transformações do SkiaSharp:

A primeira diferença é que as transformações SkiaSharp são aplicadas a todo SKCanvas o objeto, enquanto as Xamarin.Forms transformações são aplicadas a derivadas individuais VisualElement . (Você pode aplicar as Xamarin.Forms transformações ao SKCanvasView próprio objeto, porque SKCanvasView deriva de VisualElement, mas dentro disso SKCanvasView, as transformações SkiaSkarp se aplicam.)

As transformações SkiaSharp são relativas ao canto superior esquerdo das SKCanvas transformações while Xamarin.Forms são relativas ao canto superior esquerdo do VisualElement ao qual são aplicadas. Essa diferença é importante ao aplicar transformações de dimensionamento e rotação porque essas transformações são sempre relativas a um ponto específico.

A grande diferença é que as transformações SKiaSharp são métodos , enquanto as Xamarin.Forms transformações são propriedades. Esta é uma diferença semântica além da diferença sintática: as transformações SkiaSharp executam uma operação enquanto Xamarin.Forms as transformações definem um estado. As transformações SkiaSharp se aplicam a objetos gráficos desenhados posteriormente, mas não a objetos gráficos desenhados antes da aplicação da transformação. Por outro lado, uma Xamarin.Forms transformação se aplica a um elemento renderizado anteriormente assim que a propriedade é definida. As transformações SkiaSharp são cumulativas à medida que os métodos são chamados; Xamarin.Forms As transformações são substituídas quando a propriedade é definida com outro valor.

Todos os programas de amostra nesta seção aparecem na seção Transformações SkiaSharp do programa de amostra. O código-fonte pode ser encontrado na pasta Transforms da solução.

A transformação de conversão

Aprenda a usar a transformação de tradução para mudar os gráficos do SkiaSharp.

A transformação de escala

Descubra a transformação de escala SkiaSharp para dimensionar objetos em vários tamanhos.

A transformação de rotação

Explore os efeitos e animações possíveis com a transformação de rotação SkiaSharp.

A transformação de distorção

Veja como a transformação de inclinação pode criar um objeto gráfico inclinado.

Transformações de matriz

Aprofunde-se nas transformações do SkiaSharp com a versátil matriz de transformação.

Manipulações de toque

Use transformações de matriz para implementar manipulações de toque para arrastar, dimensionar e girar.

Transformações não afins

Vá além do oridinário com efeitos de transformação não afins.

Rotação 3D

Use transformações não afins para girar objetos 2D no espaço 3D.