WM6.5 Gestures(제스처) 터치 스크롤링에 대한 질문입니다 Programing/WinMoDev Q&A2010. 2. 17. 14:47
질문자 : 와루모노(warumono5001) | 링크 : http://cafe.naver.com/winmodev/1225 |
<질문내용> WM6.5 에서 Gestures 기능을 사용하여 화면을 구성하고자 하는데, 가로 터치 스크롤링을 하는데 있어서 어려운 점이 있어 질문합니다. 아래 관련소스/참고자료 는 기존의 샘플코드에서 아주약간의 코드 추가를 한 자료입니다.
화면구성은 다음과 같습니다. ======================================================================================================== gestureRecognizer1.TagetControl = panel1 physicsEngine1.ExtentControl = panel1 physicsEngine1.ViewportControl = Form1
* panel1을 바탕으로 panel2(왼쪽화면), panel3(가운데화면), panel4(오른쪽화면) 를 Add 하여 3개의 화면으로 구성 ========================================================================================================
중요한 부분은 관련소스에서 파란색으로 표현한 부분입니다. 각 세줄의 코드를 1, 2, 3 으로 지칭하겠습니다.
======================================================================================================== 1 : physicsEngine1.Velocity = e.Velocity; 3 : physicsEngine1.ItemSize = new Size(this.Width, this.Height); ========================================================================================================
2만을 삭제하고 디버깅을 하면 panel2, panel3, panel4 화면이 좌우 터치 스크롤 속도에 따라 자유이동합니다. 그리고, 3에 의해서 터치 스크롤 속도(e.Velocity) 가 강하지 않으면 각 panel의 크기에 맞추어 지도록 되어있습니다.
문제는 여기서 입니다. 1번을 삭제하고, 2번과 3번만을 추가한 코드에서 왼쪽에서 오른쪽으로 터치 스크롤을 하면 왼쪽으로 화면이동이 정상적으로 됩니다. 하지만 오른쪽에서 왼쪽으로 터치 스크롤을 하면 에러가 발생하지는 않으나 현 화면으로 맞추려 자신의 화면으로 자동 이동되는 현상이 발생합니다. 즉, 현재 화면이 panel3(가운데화면) 인 상태에서 panel4(오른쪽화면)으로 이동은 정상적으로 이루어지나, panel3(가운데화면) 인 상태에서 panel2(왼쪽화면)으로 이동하고자 하면 터치 스크롤하여 Pan 한 상태가 이동되다가 다시 panel3(가운데화면)으로 자동으로 돌아오는 현상이 발생합니다. 글로서 설명을 하자니 이해가 가지 않을 것이라 생각합니다. 혹시, WM6.5 Gestures 를 사용하시는 개발자 분들께 아래 코드를 참고하여 질문의 요지를 파악해주시면 고맙겠습니다.
관련소스/참고자료
using System; namespace TouchScrollingTest003 private Point delta; public Form1() private void gestureRecognizer1_Pan(object sender, Microsoft.WindowsMobile.Gestures.GestureEventArgs e) last = e.Location; return; delta = e.Location.Subtract(last); offset.X = offset.X < 0 ? 0 : offset.X; private void gestureRecognizer1_Scroll(object sender, GestureScrollEventArgs e) private void Form1_Resize(object sender, EventArgs e) <추가질문> | |
<답변내용> 안녕하세요 루나네스 입니다 physicsEngine 에는 ItemSize를 설정해 줘야 한 화면단위로 이동할 것 이기 때문에 physicsEngine1.ItemSize = new Size(this.Width, this.Height); 그럼 문제가 생기는 Scroll 부분은... physicsEngine 이 재미 있는 것이 e.Velocity 값이 physicsEngine1.Velocity = e.Velocity; 이때 움직임이 발생하는 것은 Pan 이벤트 때문에 움직이는 것이고, Scroll 이벤트에서 그래서 하지만 오른쪽에서 왼쪽으로 터치 스크롤을 하면 에러가 발생하지는 않으나 현 화면으로 맞추려 자신의 화면으로 자동 이동되는 현상이 발생합니다. 해결방법은 무엇이냐.. Scroll 이벤트의 Velocity값을 잘 적용해 줘야 하는데 physicsEngine1.Velocity = e.Velocity > this.Width ? this.Width : e.Velocity; 그런데 이렇게 넣어주면.. 대부분 최대값인 this.Width 값으로 적용되어서 저는 이렇게 해결했습니다 위의 두 라인을 넣어서 각각 움직임을 비교해보세요 ^^ | |
작성일 : 2010.02.09 |
'Programing > WinMoDev Q&A' 카테고리의 다른 글
Graphics객체의 DrawString 질문 입니다. (0) | 2010.02.18 |
---|---|
문자 동기화 방법 없을까요? (0) | 2010.02.17 |
UI스레드에 접근하는방법과 통신..질문있습니다 ㅜ (1) | 2010.02.17 |
터치 스크롤 구현은 어떤 방식으로 제작이 되나요? (0) | 2010.02.17 |
안녕하세요. 처음 시작하는 초보입니다. ^^; (0) | 2010.02.17 |