다음을 통해 공유


조작 및 관성 개요

조작은 사용자가 조작자를 사용하여 사용자 인터페이스(UI) 요소를 이동하고 회전하고 크기를 조정할 수 있도록 해줍니다. 조작자는 마우스이거나 터치 방식의 시나리오에서는 스타일러스나 손가락에 해당합니다.

관성은 동작 중인 UI 요소에 대한 마찰력을 시뮬레이션하여 해당 UI 요소가 현실에서와 같이 움직이도록 합니다. 그러면 해당 요소의 선형 및 각도 움직임이 모두 점차적으로 느려진 후에 멈추게 됩니다. 이 문서에서는 .NET Framework의 조작 및 관성을 소개합니다.

조작

조작은 조작자 컬렉션을 복합 개체로 취급합니다. 응용 프로그램은 개별 구성 요소 대신 복합 개체의 변경 사항을 추적할 수 있습니다.

다음과 같은 경우를 예로 들어 보겠습니다. 사용자는 두 개의 조작자를 사용하여 이미지를 이동하고 회전하고 크기를 조정할 수 있습니다. 각 조작자의 변동 사항은 다른 조작자와 함께 해석됩니다.

예를 들어 이미지에 두 개의 조작자(1 및 2)가 있는데 조작자 1을 +Y 방향(아래쪽)으로 이동할 경우 이미지의 변경 사항은 조작자 2가 어떻게 되는지에 따라 달라집니다. 조작자 2도 +Y 방향(아래쪽)으로 이동하면 이미지가 간단히 +Y 방향으로 이동합니다. 하지만 조작자 2가 그대로 있거나 -Y 방향(위쪽)으로 이동하는 경우에는 이미지가 작아지거나 회전합니다.

두 손가락으로 조작하는 가상 사진입니다.

두 개의 조작자로 조작되는 이미지

조작 처리는 조작자의 하위 집합을 모니터링하고 조작자가 개별적으로 작동하는 것이 아니라 하나로 작동하는 것처럼 해석하는 프레임워크를 제공합니다. 응용 프로그램에서 조작할 각 UI 요소마다 조작 프로세서 개체를 하나씩 만드는 방식으로 여러 조작 프로세서 개체를 동시에 만들 수 있습니다. 조작 프로세서는 어떤 입력 장치를 관찰해야 하는지에 대한 정보를 입수하고 .NET 이벤트를 통해 조작을 보고합니다.

조작 프로세서는 조작되고 있는 특정 요소에 대한 정보를 가지고 있지 않습니다. 응용 프로그램은 응용 프로그램별 요소에 변경 사항을 별도로 적용합니다. 예를 들어 이미지에 변환을 적용하거나, 이미지를 다시 그려서 새 위치에 표시하거나 새로운 크기 또는 방향으로 표시합니다.

조작은 2차원(2-D) 상관 변환을 위하여 디자인되었습니다. 이러한 변환에는 전환, 회전 및 배율이 포함됩니다.

조작 요소

조작은 Manipulator2D 개체의 컬렉션입니다. 이 집계 조작은 원점과 타원으로 표시됩니다. 원점은 요소를 조작하고 있는 모든 조작자의 평균 위치입니다. 타원의 반지름은 원점에서 각 Manipulator2D 개체까지의 평균 거리입니다.

조작의 일부입니다.

두 개의 조작자(1 및 2), 원점 및 타원이 조작을 지정합니다.

UI 요소에 대한 조작자가 추가, 이동 또는 제거될 때 응용 프로그램은 ProcessManipulators() 메서드를 호출하여 ManipulationProcessor2D 개체를 업데이트합니다. 조작이 처음 시작되면 Started 이벤트가 발생합니다.

참고참고

조작 처리는 프레임 기반 업데이트 환경에서 사용될 때 보다 효과적입니다.Microsoft XNA 응용 프로그램에서 조작 처리를 사용할 때는 XNA 프레임워크가 Game.Update 메서드를 사용하여 프레임 기반 업데이트를 제공하기 때문에 문제가 되지 않습니다.WinForms 등의 다른 환경에서는 조작을 수집하고 ProcessManipulators() 메서드에 주기적으로 배치로 보내기 위한 프레임 기반 논리를 직접 제공해야 할 수도 있습니다.

조작자의 수 또는 해당 위치가 변경되면 Delta 이벤트가 발생합니다. Delta 이벤트 처리기에 전달되는 Manipulation2DDeltaEventArgs 개체의 속성은 마지막 이벤트 이후에 발생한 원점, 배율, 회전 및 변환의 변경 사항을 지정합니다. 조작의 원점은 조작자가 이동할 때 그리고 조작자가 추가되거나 제거될 때 변경됩니다. 변환 값은 조작자에 얼마나 많은 X 또는 Y 이동이 포함되어 있는지를 지정합니다.

응용 프로그램은 새 값을 사용하여 UI 요소를 다시 그립니다.

접점 A가 오른쪽으로 이동한 후의 조작입니다.

조작자 1이 이동하여 원점이 변경되도록 함

조작과 연결된 마지막 조작자가 ManipulationProcessor2D 개체에서 제거되면 Completed 이벤트가 발생합니다.

조작 처리 모델

조작 프로세서는 직접 사용 모델을 사용합니다. 이 간단한 모델에서는 응용 프로그램이 입력 이벤트 세부 정보를 조작 프로세서에 전달해야 합니다. 마우스 장치, 스타일러스, 손가락 같은 기본 입력 형식을 통해 입력 이벤트가 발생할 수 있습니다. 이 프로세스는 직접 필터링 메커니즘과 간단한 사용 모델을 제공하므로 응용 프로그램이 필요할 때 입력 이벤트를 일괄 처리할 수 있습니다.

응용 프로그램은 조작 프로세스에 기본 입력 형식을 포함시키기 위해서 기본 입력 형식의 세부 정보로부터 Manipulator2D 구조를 만들고 ProcessManipulators() 메서드를 사용하여 이 구조를 조작 프로세서에 전달합니다. 그러면 조작 프로세서가 이벤트를 발생시키고, 응용 프로그램은 이 이벤트를 처리하여 시각적 구성 요소를 적절하게 업데이트해야 합니다.

조작의 흐름 직접 사용 모델입니다.

조작 처리 모델

관성

관성 프로세서는 응용 프로그램이 현실의 동작을 시뮬레이션하여 UI 요소의 위치, 방향 및 기타 속성을 추정할 수 있도록 합니다.

예를 들어 사용자가 요소에 긋기를 수행하면 요소가 계속 움직이다가 감속하여 천천히 멈출 수 있습니다. 관성 프로세서는 관계 2차원 값(원점, 배율, 변환 및 회전)이 지정된 시간 동안 지정된 비율로 감속하도록 함으로써 이러한 동작을 구현합니다.

조작 처리에서와 마찬가지로 관성 프로세서는 특정 UI 요소에 대한 정보를 가지고 있지 않습니다. InertiaProcessor2D 개체에 대해 발생한 이벤트에 대한 응답으로 응용 프로그램이 응용 프로그램 고유의 요소에 변경 사항을 따로 적용합니다.

관성 처리 및 조작 처리는 종종 함께 사용됩니다. 서로의 인터페이스가 유사하고, 일부의 경우 발생되는 이벤트가 동일합니다. 일반적으로 관성 처리는 UI 요소의 조작이 완료될 때 시작됩니다. 이는 Completed 이벤트를 수신 대기하고 해당 이벤트 처리기에서 관성 처리를 시작함으로써 가능합니다.

참고 항목

참조

System.Windows.Input.Manipulations