클리핑(DirectComposition)
참고
Windows 10 앱의 경우 DirectComposition 대신 Windows.UI.Composition API를 사용하는 것이 좋습니다. 자세한 내용은 시각적 계층을 사용하여 데스크톱 앱 현대화를 참조하세요.
클리핑은 시각적 개체 또는 트리의 렌더링을 특정 사각형 영역으로 제한하여 시각적 트리 또는 시각적 트리의 일부만 표시할 수 있는 방법을 제공합니다. 이 항목에서는 시각적 개체 클리핑에 대한 Microsoft DirectComposition 지원에 대해 설명합니다. 여기에는 다음과 같은 섹션이 포함됩니다.
클립 사각형
시각적 개체에는 시각적 개체의 비트맵 콘텐츠 내에서 사각형 영역 또는 클립 사각형을 정의하는 Clip 속성이 있습니다. 시각적 개체가 화면에 렌더링되면 클립 사각형 내에 있는 비트맵 콘텐츠의 일부만 화면에 그려지고 클립 사각형 외부로 확장되는 콘텐츠는 잘립니다(그리지 않음). 기본적으로 Clip 속성에는 모든 비트맵 콘텐츠가 포함됩니다.
시각적 개체의 Clip 속성은 모든 자식 및 하위 시각적 개체에 적용됩니다. 즉, 부모의 클립 사각형 범위를 벗어나는 자식 또는 하위 콘텐츠도 잘립니다.
DirectComposition은 OffsetX, OffsetY 및 2D Transform 속성을 적용하기 전에 Effect 및 3D Transform 속성을 적용한 후 Clip 속성을 적용합니다. 즉, 2D 변환, OffsetX 및 OffsetY는 시각적 콘텐츠와 클립 사각형 모두에 영향을 줍니다. 반면 3D 변환 및 효과는 클립 사각형에 적용되지 않습니다.
예를 들어 오프셋 또는 2D 변환을 적용할 때 클립 사각형은 변환 행렬의 영향을 받습니다. 따라서 둥근 모서리 클립 사각형과 함께 오프셋과 2D 회전(45도)을 추가하면 다음과 같은 결과가 발생합니다.
클립 사각형에 "내부" 3D 변환을 적용하는 경우 클립 사각형은 변환 매트릭스의 영향을 받지 않습니다. Z축을 중심으로 회전을 적용하는 경우에도(이전 예제와 사실상 동일함) 다음 다이어그램은 결과입니다.
3D 행렬이 클립 자체에 적용되지 않으므로 시각적 개체가 클립 내에서 회전합니다.
Clip 속성을 빈 사각형으로 설정하면 시각적 개체가 완전히 잘립니다. 즉, 시각적 개체는 시각적 트리에 포함되지만 아무것도 렌더링하지 않습니다. 컴퍼지션에 특정 시각적 개체를 포함하지 않으려면 빈 클립 사각형을 설정하는 대신 시각적 트리에서 시각적 개체를 제거합니다. 시각적 개체를 제거하면 성능이 향상됩니다.
IDCompositionVisual::SetClip 메서드를 사용하여 시각적 개체의 Clip 속성을 설정합니다. 이 메서드에는 Clip 속성 값을 정적 사각형 또는 클립 개체로 설정할 수 있는 오버로드가 포함됩니다. 시각적 개체의 수명 동안 클립 사각형의 크기를 변경할 필요가 없는 경우 정적 사각형을 사용합니다. 차원을 변경하거나 클립 사각형에 애니메이션 효과를 주어야 하는 경우 클립 개체를 사용합니다.
Clip 개체
클립 개체는 클립 사각형을 나타내는 COM(Component Object Model) 개체입니다. IDCompositionDevice::CreateRectangleClip 메서드를 사용하여 클립 개체를 만든 다음 개체의 IDCompositionRectangleClip 인터페이스를 사용하여 개체의 속성을 설정합니다. 새로 만든 클립 개체에는 Left 및 Top 속성에 대해 가능한 최소 값과 오른쪽 및 아래쪽 속성에 대해 가능한 최대 값이 있으므로 효과적으로 클립 개체를 사용할 수 없습니다. 즉, 개체는 시각적 개체의 전체 비트맵 콘텐츠를 포함하는 클립 사각형을 나타냅니다.
클립 개체에는 클립 개체의 둥근 모서리를 지정할 수 있는 속성 집합이 포함되어 있습니다. 속성을 사용하면 클리핑 개체의 각 모서리에 있는 x 반지름과 y 반경을 설정할 수 있습니다.
애니메이션 클립 사각형
클립 개체의 왼쪽, 위쪽, 오른쪽 및 아래쪽 속성에 애니메이션 개체를 적용하여 클립 사각형에 애니메이션 효과를 적용할 수 있습니다. 시각적 개체의 Clip 속성에 애니메이션 클립 사각형을 적용하려면 IDCompositionVisual::SetClip(IDCompositionClip) 오버로드된 메서드를 사용합니다.
애니메이션 개체에 대한 자세한 내용은 애니메이션을 참조 하세요.
관련 항목