변환(DirectComposition)
참고 항목
Windows 10 앱의 경우 DirectComposition 대신 Windows.UI.Composition API를 사용하는 것이 좋습니다. 자세한 내용은 시각적 계층을 사용하여 데스크톱 앱 현대화를 참조하세요.
이 항목에서는 2D(2차원) 아핀(선형) 변환에 대한 Microsoft DirectComposition 지원에 대해 설명하고 DirectComposition에서 지원하는 변환 유형에 대해 설명합니다.
DirectComposition은 3D 큐브 뷰 변환도 지원하지만 중간 비트맵을 생성해야 하므로 DirectComposition은 이를 변환이 아닌 효과로 간주합니다. 3D 원근 변환 효과에 대한 자세한 내용은 효과를 참조 하세요.
이 항목에는 다음 섹션이 포함되어 있습니다.
DirectComposition 2D 변환이란?
2D 변환을 사용하면 시각적 개체를 다른 위치(변환)로 이동하거나, 더 크거나 작게 만들거나(크기 조정), 회전(회전) 또는 도형을 왜곡(기울이기)하여 시각적 개체의 위치, 크기 또는 특성을 2차원으로 변경할 수 있습니다.
2D 변환은 동일한 좌표 공간 내에서 한 위치에서 다른 위치로 또는 한 좌표 공간에서 다른 좌표 공간으로 시각적 개체의 점을 매핑하여 수행됩니다. 이 매핑은 다음 표와 같이 부동 소수점 값의 열이 3개인 3개의 행 컬렉션으로 정의된 변환 행렬이라는 값 테이블에 설명되어 있습니다.
M11Default: 1.0
M21Default: 0.0
M31OffsetX: 0.0
M12Default: 0.0
M22Default: 1.0
M32OffsetY: 0.0
0.0
0.0
1.0
아핀 2D 변환의 변환 매트릭스는 이전 변환 행렬에서 세 번째 열을 생략하는 3-by-2 행렬입니다. 다음 표에서는 이 행렬의 레이아웃을 보여줍니다.
M11Default: 1.0
M21Default: 0.0
M31OffsetX: 0.0
M12Default: 0.0
M22Default: 1.0
M32OffsetY: 0.0
참고 항목
DirectComposition은 스테레오 콘텐츠에 2D 변환을 적용할 때 특별한 처리를 수행하지 않습니다. 즉, 2D 변환이 적용될 때 3D 콘텐츠가 왜곡된 것처럼 보일 수 있습니다.
DirectComposition 2D 좌표 공간
DirectComposition은 왼손 2D 좌표 공간을 사용합니다. 즉, 양수 x축 값은 오른쪽으로 증가하고 양수 y축 값은 아래쪽으로 증가합니다. 시각적 개체는 다음 그림과 같이 x축과 y축이 교차하는 지점(0, 0)인 원점을 기준으로 배치됩니다.
3 x 2 변환 매트릭스의 값을 조작하여 개체를 2차원으로 회전, 크기 조정, 기울이기 및 변환할 수 있습니다. 예를 들어 OffsetX를 100으로 설정하고 OffsetY를 200으로 설정하면 개체를 오른쪽 100픽셀로 이동하고 200픽셀 아래로 이동합니다.
아핀 2D 변환 지원
다음 표에서는 DirectComposition에서 지원하는 아핀 2D 변환의 형식을 설명하고 다양한 유형의 변환을 수행하는 데 사용할 수 있는 인터페이스를 나열합니다.
변환/인터페이스 | 설명 | 그림 |
---|---|---|
2D IDCompositionRotateTransform 회전 | 지정된 중심점에 대해 지정된 각도로 시각적 개체를 회전합니다. | |
Scale 2D IDCompositionScaleTransform | 지정된 중심점에 대한 지정된 요소로 시각적 개체 크기를 조정합니다. | |
Skew 2D IDCompositionSkewTransform | x축과 y축을 따라 지정된 각도와 지정된 중심점 주위로 시각적 개체를 기울이기. | |
2D IDCompositionTranslateTransform 번역 | x축과 y축 방향으로 시각적 개체의 위치를 변경합니다. |
행렬 2D 변환
IDCompositionMatrixTransform 인터페이스를 사용하면 고유한 3x2 아핀 2D 변환 매트릭스를 정의하고 시각적 개체에 적용할 수 있습니다. 이 인터페이스는 다른 DirectComposition 변환 인터페이스를 통해 사용할 수 없는 아핀 2D 변환 유형을 적용해야 하는 경우에 유용합니다. D2D_MATRIX_3X2_F 구조체를 채우고 IDCompositionMatrixTransform::SetMatrix 메서드에 전달하여 행렬을 정의합니다.
그룹 변환
변환 그룹을 사용하여 여러 변환을 하나로 결합할 수 있습니다. 변환 그룹은 행렬이 컬렉션에 지정된 순서대로 함께 곱되는 변환 개체의 컬렉션을 정의합니다. 그러면 결과 변환 행렬이 시각적 개체에 적용됩니다. 변환 그룹은 각 변환을 개별적으로 적용하는 것과 동일한 결과를 생성합니다.
변환 그룹의 변환 개체 순서가 중요합니다. 예를 들어 시각적 개체를 먼저 회전한 다음 크기를 조정한 다음 변환하는 경우 시각적 개체를 처음 변환한 다음 회전한 다음 크기를 조정하는 경우와 결과가 다릅니다. DirectComposition은 항상 컬렉션에 지정된 순서대로 시각적 개체에 변환을 적용합니다.
변환 그룹을 만들려면 먼저 그룹에 포함할 변환 개체를 만든 다음 변환 개체 포인터 배열을 IDCompositionDevice::CreateTransformGroup 메서드에 전달합니다. 변환 그룹을 만든 후에는 변환 개체를 추가하거나 제거할 수 없습니다. 그러나 컬렉션에서 개별 변환 개체의 속성을 수정할 수 있으며 변경 내용은 결과 변환 행렬에 반영됩니다.
변환 애니메이션
변환의 속성에 애니메이션 효과를 적용할 수 있습니다. 속성에 애니메이션이 적용되면 DirectComposition은 시간이 지남에 따라 속성 값을 한 번에 변경하지 않고 변경합니다. 이는 전환을 만들 때 특히 유용합니다. 자세한 내용은 애니메이션을 참조 하세요.