티스토리 뷰

WindowsPhone

WP7 개발 기초 - 터치 이벤트 활용

생각많은 소심남 2012. 2. 21. 15:17
이번에는 터치이벤트에 대해서 다뤄보고자 합니다.

xna에선 touch라는 클래스가 따로 있었지만 실버라이트에서는 Manipulation이라는 이벤트를 통해서 터치를 구현할 수 있습니다. 우선 새로운 프로젝트를 열고 Ellipse를 하나 삽입합니다. 물론 안에 색깔을 채우는 건 Fill이나 stroke 항목을 건드리면 되겠지요.

 
이제 Manipulation Event를 삽입해야 합니다. 뭐 일일히 이름을 쳐도 되지만 Properties창을 통해서 간단하게 이벤트를 삽입할 수 있습니다.
 


ellipse를 선택한상태에서 Events를 들어가 Manipulation항목을 검색하면 3개가 뜨는데 그중 Manipulation 항목을 선택해 더블클릭해주면 코드가 자동으로 생성됩니다.

 그런 후에 Ellipse의 안을 RadialGradientBrush로 채워줍니다. 

 
마지막으로 RenderTransform을 주는데 여기서 CompositeTransform 으로만 맺어져 있습니다. 이걸 C#코드에서 참조해야 합니다. 책에서는 이렇게 하는 방법이 하나의 이벤트 핸들러에서 하나이상의 엘리먼트를 다룰때 사용하기 좋은 방법이라 명시하고 있습니다.

여기까지 하고 이제 C#에서 이벤트를 처리합니다.

 
CompositeTransform이 ellipse의 renderTransform을 담당하게 해서 터치하는 곳의 x나 y가 0보다 크다면 (즉 터치했을때의 경우이겠지요.) 그 값에 따라 maxScale이 x나 y의 위치를 scaling 된 값을 취하게 되는 겁니다. 그리고 원점 좌표도 터치한 곳에 따라서 이동하게 되는 이벤트입니다. 결과적으로 이번 프로젝트를 통해서 구현하고자 했던 기능은 바로 핀치와 스트레칭 기능이었습니다.

사실 이건 폰이 있거나 터치스크린을 지원하는 모니터가 있어야 확인이 가능합니다. 아니면 Dreamspark에서 지원하는 MuiltMouse SDK를 사용해서 간접적으로나마 멀티터치를 구현할 수 있습니다. 저는 모니터가 터치이기 때문에 한번 해봤습니다. 


조금 허접하긴 하지만 어떻게든 되네요..

댓글