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.