Compartilhar via


Transformações de SkiaSharp

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

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 a rotação de bitmaps ou texto — não são possíveis sem o uso de transformações.

As transformações SkiaSharp suportam as 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
  • Inclinar para deslocar coordenadas horizontal ou verticalmente para que um retângulo se torne um paralelogramo

Estas são conhecidas como transformadas afim . 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 nada além de um paralelogramo, e um círculo nunca é transformado em nada além de uma elipse.

O SkiaSharp também suporta transformações não afins (também chamadas de transformações projetivas ou em perspectiva ) com base em uma matriz de transformação padrão 3 por 3. Uma transformada não afim permite que um quadrado seja transformado em qualquer quadrilátero convexo, que é uma figura de quatro lados com todos os ângulos interiores 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 Transforma

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 Xamarin.Forms transformações e transformações SkiaSharp:

A primeira diferença é que as transformações SkiaSharp são aplicadas ao objeto inteiro SKCanvas , 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 do SKCanvas enquanto Xamarin.Forms as 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 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 subsequentemente, 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 como 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 SkiaSharp Transforms do programa de exemplo. 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 alterar os gráficos do 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 inclinação pode criar um objeto gráfico inclinado.

Transformações de matriz

Aprofunde-se nas transformações 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 afim.

Rotação 3D

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