본문 바로가기

WindowPhone/Silverlight

MultiTouch

Silverlight3 에서부터 MultiTouch가 가능 하게 되었는데요,
머 사실 한 객체에 대한 MultiTouch는 Manipulation을 통해서 쉽게 알 수 있는데요.

이번 포스팅 에서는 여러 개의 객체에 대한 MultiTouch에 대해서 알아 보도록 하겠습니다.

예를 들어 다음과 같은 상황 입니다.

여기서 사각형 4개를 전부 터치 해서 동시에 움직이고 싶은 상황 인데요.

기존에 사각형 움직이는 방법들에는 MouseLeftButtonDown/Move/Up 등에서 처리를 해줘서 이동을 시켜 줬었는데요.
동일한 방법으로 각각의 사각형들에 Mouse 이벤트를 줘서 이동 할려고  할 경우 하나의 사각형만이 움직이는걸 확인 하실 수 있습니다.

 

그렇다면 어떻게 해야 동시에 사각형 4개를 움직일 수 있을까요.
방법은 다음과 같습니다.

실버라이트3 이후 생긴

Touch.FrameReported

이라는 이벤트가 있는데요. 이 이벤트는 어떤 객체에 대해서 발생 하는 것 이 아니라 해당 어플리케이션 에 전체적으로 발생 하는 이벤트 입니다.

이 이벤트의 핸들러 에 넘어오는 TouchFrameEventArgs 라는 이벤트 아규먼트를 받아서 확인해 보시면

e.GetTouchPoints(null)

라는 함수를 포함하고 있는데요. 이 함수는 TouchPointCollection 이라는 TouchPoint Collection 을 넘겨 줍니다.
이렇게 넘겨준 TouchPoiont 들을 받아서 TouchPoint의 프로퍼티 중에 TouchDevice.DirectlyOver 이 프로퍼티를 확인 하시면 현재 터치가 된
Control이 무엇인지 확인 하실 수 있습니다.

그리고 TouchPoint 에 다른 프로퍼티 중에는 Action이라는 프로퍼티가 있는데 이 프로퍼티의 상태로는

TouchAction.Down , TouchAction.Move , TouchAction.Up 이 존재 합니다.

이렇게 각각의 상태는 Mouse의 LeftButtonDown,Move,Up 등과 매치과 되므로 기존의 하시던 방식으로 동시에 여러개의 객체를 이동 하실수 있습니다. :-D 잇힝