다음을 통해 공유


SkiaSharp 변환

SkiaSharp 그래픽을 표시하기 위한 변환에 대해 알아보기

SkiaSharp은 개체의 메서드로 구현되는 기존 그래픽 변환을 SKCanvas 지원합니다. 수학적으로 변환은 그래픽 개체가 렌더링될 때 그리기 함수에서 SKCanvas 지정하는 좌표와 크기를 변경합니다. 변환은 종종 반복적인 그래픽을 그리거나 애니메이션에 편리합니다. 비트맵 또는 텍스트 회전과 같은 일부 기술은 변환을 사용하지 않고는 불가능합니다.

SkiaSharp 변환은 다음 작업을 지원합니다.

  • 한 위치에서 다른 위치로 좌표 이동으로 변환
  • 좌표 및 크기를 늘리거나 줄이기 위해 크기 조정
  • 회전하여 점 주위에 좌표 회전
  • 사각형이 병렬 그래프가 되도록 가로 또는 세로로 좌표를 이동하려면 기울이

이를 아핀 변환이라고 합니다. 아핀 변환은 항상 병렬 선을 유지하고 좌표 또는 크기가 무한하게 되지 않습니다. 사각형은 병렬 변환 이외의 다른 항목으로 변환되지 않으며 원은 타원 이외의 다른 것으로 변환되지 않습니다.

SkiaSharp는 표준 3-by-3 변환 매트릭스를 기반으로 하는 비아핀 변환(투사 또는 원근 변환이라고도 함)도 지원합니다. 비아핀 변환을 사용하면 사각형을 모든 내부 각도가 180도 미만인 4면 그림인 모든 공록 사분면으로 변환할 수 있습니다. 비아핀 변환은 좌표 또는 크기가 무한하게 될 수 있지만 3D 효과에는 매우 중요합니다.

SkiaSharp와 Xamarin.Forms 변환의 차이점

Xamarin.Forms 또한 SkiaSharp와 유사한 변환도 지원합니다. 클래스는 Xamarin.FormsVisualElement 다음 변환 속성을 정의합니다.

RotationY 속성은 RotationX 준 3D 효과를 만드는 큐브 뷰 변환입니다.

SkiaSharp 변환과 Xamarin.Forms 변환 간에는 몇 가지 중요한 차이점이 있습니다.

첫 번째 차이점은 SkiaSharp 변환이 개별 VisualElement 파생 항목에 적용되는 동안 Xamarin.Forms 전체 SKCanvas 개체에 적용된다는 것입니다. (파생되기 때문에 SKCanvasView VisualElement개체 자체에 변환을 적용 Xamarin.Forms 할 SKCanvasView 수 있지만 그 SKCanvasView안에 SkiaSkarp 변환이 적용됩니다.)

SkiaSharp 변환은 변환이 적용되는 왼쪽 위 모서리를 기준으로 하는 동안 Xamarin.Forms 의 왼쪽 위 모서리 SKCanvas VisualElement 를 기준으로 합니다. 이러한 차이는 크기 조정 및 회전 변환을 적용할 때 중요합니다. 이러한 변환은 항상 특정 지점에 상대적이기 때문입니다.

정말 큰 차이점은 SKiaSharp 변환은 메서드 Xamarin.Forms 이고 변환은 속성이라는 것입니다. 이는 구문적 차이를 넘어서는 의미 체계적 차이입니다. SkiaSharp 변환은 변환이 상태를 설정하는 동안 Xamarin.Forms 작업을 수행합니다. SkiaSharp 변환은 이후에 그린 그래픽 개체에는 적용되지만 변환을 적용하기 전에 그린 그래픽 개체에는 적용되지 않습니다. 반면 변환 Xamarin.Forms 은 속성이 설정되는 즉시 이전에 렌더링된 요소에 적용됩니다. SkiaSharp 변환은 메서드가 호출되면 누적됩니다. Xamarin.Forms 속성이 다른 값으로 설정되면 변환이 바뀝니다.

이 섹션의 모든 샘플 프로그램은 샘플 프로그램의 SkiaSharp 변환 섹션에 표시됩니다. 소스 코드는 솔루션의 Transforms 폴더에서 찾을 수 있습니다.

좌표 이동 변환

번역 변환을 사용하여 SkiaSharp 그래픽을 이동하는 방법을 알아봅니다.

배율 변환

개체를 다양한 크기로 크기 조정하기 위한 SkiaSharp 크기 변환을 확인합니다.

회전 변환

SkiaSharp 회전 변환을 사용하여 가능한 효과 및 애니메이션을 탐색합니다.

기울이기 변환

기울이기 변환으로 기울어진 그래픽 개체를 만드는 방법을 알아보세요.

매트릭스 변환

다재다능한 변환 매트릭스를 사용하여 SkiaSharp 변환에 대해 자세히 알아본다.

터치 조작

행렬 변환을 사용하여 끌기, 크기 조정 및 회전을 위한 터치 조작을 구현합니다.

비아핀(Non-Affine) 변환

비아핀 변환 효과가 있는 oridinary를 넘어갑니다.

3D 회전

비아핀 변환을 사용하여 3D 공간에서 2D 개체를 회전합니다.