Transformações de SkiaSharp

Baixar exemplo Baixar o exemplo

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

O SkiaSharp dá suporte a transformações gráficas tradicionais implementadas como métodos do SKCanvas objeto . Matematicamente, as transformações alteram as coordenadas e os tamanhos especificados em SKCanvas funções de desenho à medida que os objetos gráficos são renderizados. As transformações geralmente são convenientes para desenhar elementos 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 dão suporte às seguintes operações:

  • Traduzir para deslocar coordenadas de um local para outro
  • Dimensionar para aumentar ou diminuir coordenadas e tamanhos
  • Girar para girar coordenadas em torno de um ponto
  • Distorção para deslocar coordenadas horizontal ou verticalmente para que um retângulo se torne um paralelismo

Elas são conhecidas como transformações afim . As transformações de afim sempre preservam linhas paralelas e nunca fazem com que uma coordenada ou tamanho se torne infinito. Um quadrado nunca é transformado em nada além de um paralelismo, e um círculo nunca é transformado em nada além de uma elipse.

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

Diferenças entre SkiaSharp e Xamarin.Forms Transformações

Xamarin.Forms também dá suporte a 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.

Há várias diferenças cruciais entre 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 derivativos individuais VisualElement . (Você pode aplicar as Xamarin.Forms transformações ao SKCanvasView próprio objeto, pois SKCanvasView deriva de VisualElement, mas dentro disso SKCanvasView, as transformações de SkiaSkarp se aplicam.)

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

A grande diferença é que as transformações de SKiaSharp são métodos enquanto as Xamarin.Forms transformações são propriedades. Essa é 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 que são desenhados antes da transformação ser aplicada. 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 conforme 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 exemplo nesta seção aparecem na seção Transformações skiaSharp do programa SkiaSharpFormsDemos . O código-fonte pode ser encontrado na pasta Transformações da solução.

A transformação de conversão

Saiba como usar a transformação de tradução para deslocar elementos gráficos SkiaSharp.

A transformação de escala

Descubra a transformação de escala skiaSharp para dimensionar objetos para 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 distorção pode criar um objeto gráfico inclinado.

Transformações de matriz

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

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 afim.

Rotação 3D

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