SkiaSharp 변환SkiaSharp Transforms

샘플 다운로드 샘플 다운로드Download Sample Download the sample

SkiaSharp 그래픽을 표시 하기 위한 변환에 알아봅니다Learn about transforms for displaying SkiaSharp graphics

SkiaSharp의 메서드로 구현 되는 기존 그래픽 변환을 지원 합니다 SKCanvas 개체입니다.SkiaSharp supports traditional graphics transforms that are implemented as methods of the SKCanvas object. 변환 좌표 및에서 지정 하는 크기를 변경 하는 수학적으로 SKCanvas 그리기 기능으로 그래픽 개체는 렌더링 됩니다.Mathematically, transforms alter the coordinates and sizes that you specify in SKCanvas drawing functions as the graphical objects are rendered. 변환은 애니메이션 또는 반복적인 그래픽 그리기에 대 한 편리한 경우가 많습니다.Transforms are often convenient for drawing repetitive graphics or for animation. 몇 가지 기법 — 비트맵 이나 텍스트를 회전 같은 — 변환 사용 하지 않고 가능 하지 않습니다.Some techniques — such as rotating bitmaps or text — are not possible without the use of transforms.

SkiaSharp 변환 작업을 지원 합니다.SkiaSharp transforms support the following operations:

  • 변환 다른 곳에서 shift 좌표로Translate to shift coordinates from one location to another
  • 확장 좌표와 크기를 늘리거나Scale to increase or decrease coordinates and sizes
  • 회전 지점 좌표를 회전 하려면Rotate to rotate coordinates around a point
  • 기울이기 이동할 가로 또는 세로로 조정 사각형은 평행 사변형 되도록Skew to shift coordinates horizontally or vertically so that a rectangle becomes a parallelogram

이러한 라고 affine 변환 합니다.These are known as affine transforms. Affine 변환만 평행선을 항상 보존 및 무한 되도록 좌표 또는 크기를 일으키지 않습니다.Affine transforms always preserve parallel lines and never cause a coordinate or size to become infinite. 사각형은 평행 사변형 이외의으로 변환 되지 않습니다 및 원 타원 이외의 값으로 변환 되지 됩니다.A square is never transformed into anything other than a parallelogram, and a circle is never transformed into anything other than an ellipse.

SkiaSharp 비 관계 변환 지원 (라고도 프로젝션 또는 관점 변환) 표준 3-3 하 여 변환 매트릭스를 기반 합니다.SkiaSharp also supports non-affine transforms (also called projective or perspective transforms) based on a standard 3-by-3 transform matrix. 비 관계 변환에는 네 면 모든 내부 각도가 180도 보다는 모든 볼록 사변형으로 변환 하는 사각형 수 있습니다.A non-affine transform allows a square to be transformed into any convex quadrilateral, which is a four-sided figure with all interior angles less than 180 degrees. 비 affine 변환만 좌표나 크기 무한 되도록 하면 되지만 3D 효과 대 한 중요 합니다.Non-affine transforms can cause coordinates or sizes to become infinite, but they are vital for 3D effects.

SkiaSharp 및 Xamarin.Forms 변환의 차이점Differences between SkiaSharp and Xamarin.Forms Transforms

Xamarin.Forms는 SkiaSharp의 유사한 변환도 지원 합니다.Xamarin.Forms also supports transforms that are similar to those in SkiaSharp. Xamarin.Forms VisualElement 클래스에는 다음 변환 속성을 정의 합니다.The Xamarin.Forms VisualElement class defines the following transform properties:

합니다 RotationXRotationY 속성은 큐브 뷰 변환 하는 의사 3D 효과 만듭니다.The RotationX and RotationY properties are perspective transforms that create quasi-3D effects.

가지 SkiaSharp 변환 및 Xamarin.Forms 변환 간의 몇 가지 중요 한 차이점이 있습니다.There are several crucial differences between SkiaSharp transforms and Xamarin.Forms transforms:

첫 번째 차이점은 SkiaSharp 변환 전체에 적용 된다는 사실을 SKCanvas 개인이 Xamarin.Forms 변환을 적용 하는 동안 개체 VisualElement 파생 합니다.The first difference is that SkiaSharp transforms are applied to the entire SKCanvas object while the Xamarin.Forms transforms are applied to individual VisualElement derivatives. (Xamarin.Forms 변환을 적용할 수 있습니다 합니다 SKCanvasView 개체 자체 SKCanvasView 에서 파생 되 VisualElement, 하지만 해당 SKCanvasView, SkiaSkarp 변환을 적용 합니다.)(You can apply the Xamarin.Forms transforms to the SKCanvasView object itself, because SKCanvasView derives from VisualElement, but within that SKCanvasView, the SkiaSkarp transforms apply.)

왼쪽 위 모퉁이 기준으로 SkiaSharp 변환 되는 SKCanvas Xamarin.Forms 변환은의 왼쪽 위 모퉁이 기준으로 하는 동안는 VisualElement 적용 되는 합니다.The SkiaSharp transforms are relative to the upper-left corner of the SKCanvas while Xamarin.Forms transforms are relative to the upper-left corner of the VisualElement to which they are applied. 크기 조정을 적용할 때이 차이점은 중요 하 고 이러한 변환은 항상 특정 시점을 기준으로 하므로 회전 변환 합니다.This difference is important when applying scaling and rotation transforms because these transforms are always relative to a particular point.

매우 큰 차이 SKiaSharp 변환 메서드 Xamarin.Forms 변환 하는 동안 속성합니다.The really big difference is that SKiaSharp transforms are methods while the Xamarin.Forms transforms are properties. 다음은 구문상의 차이 외 의미 체계 차이입니다. SkiaSharp 변환 작업을 수행할 Xamarin.Forms 집합을 변형 하는 동안 상태.This is a semantic difference beyond the syntactical difference: SkiaSharp transforms perform an operation while Xamarin.Forms transforms set a state. SkiaSharp 변환에 변환 적용 되기 전에 그려진 그래픽 개체 아니라 이후에 그려지는 그래픽 개체에 적용 됩니다.SkiaSharp transforms apply to subsequently drawn graphics objects, but not to graphics objects that are drawn before the transform is applied. 반면, Xamarin.Forms 변환 속성을 설정 하는 즉시 이전에 렌더링 된 요소에 적용 됩니다.In contrast, a Xamarin.Forms transform applies to a previously rendered element as soon as the property is set. SkiaSharp 변환은 누적 메서드가 호출 됩니다. Xamarin.Forms 변환 속성을 다른 값으로 설정 된 경우 대체 됩니다.SkiaSharp transforms are cumulative as the methods are called; Xamarin.Forms transforms are replaced when the property is set with another value.

이 섹션의 모든 샘플 프로그램에 표시 합니다 SkiaSharp 변환 섹션을 SkiaSharpFormsDemos 프로그램.All the sample programs in this section appear in the SkiaSharp Transforms section of the SkiaSharpFormsDemos program. 소스 코드를 찾을 수 있습니다 합니다 변환 솔루션의 폴더입니다.Source code can be found in the Transforms folder of the solution.

좌표 이동 변환The Translate Transform

SkiaSharp 그래픽 이동할 좌표 이동 변환을 사용 하는 방법에 알아봅니다.Learn how to use the translate transform to shift SkiaSharp graphics.

배율 변환The Scale Transform

다양 한 크기는 개체 크기 조정에 대 한 SkiaSharp 배율 변환을 검색 합니다.Discover the SkiaSharp scale transform for scaling objects to various sizes.

회전 변환The Rotate Transform

효과 및 애니메이션 SkiaSharp 회전 변환 가능한 살펴봅니다.Explore the effects and animations possible with the SkiaSharp rotate transform.

기울이기 변환The Skew Transform

기울이기 변환 기운된 그래픽 개체를 만들 수 있습니다 하는 방법을 참조 하세요.See how the skew transform can create tilted graphical object.

매트릭스 변환Matrix Transforms

심층 탐구 다양 한 변환 매트릭스를 사용 하 여 SkiaSharp 변환 합니다.Dive deeper into SkiaSharp transforms with the versatile transform matrix.

터치 조작Touch Manipulations

구현 끌어, 크기 조정 및 회전에 대 한 터치 조작을 사용 하 여 행렬 변환 합니다.Use matrix transforms to implement touch manipulations for dragging, scaling, and rotation.

비아핀(Non-Affine) 변환Non-Affine Transforms

비 관계 변환 효과 사용 하 여 oridinary 넘어 이동 합니다.Go beyond the oridinary with non-affine transform effects.

3D 회전3D Rotation

비 관계 변환을 사용 하 여 3D 공간에서 2D 개체를 회전 합니다.Use non-affine transforms to rotate 2D objects in 3D space.