2010-06-11 3 views
1

Silverlight의 응용 프로그램에서 마우스의 움직임을 추적해야합니다. 내 문제는 MouseMove 이벤트를 사용하면 사용자가 마우스를 충분히 빠르게 움직이면 계속 점 집합이없는 것입니다. 목록에 각 점을 추가하면 (10,10) en을 (20,20) ...)Silverlight MouseMove : 이동 중에 누락 된 부분을 찾으십시오.

이동 중에 마우스가 있던 지점을 모두 갖고 싶습니다. 의견이 있으십니까?

답변

1

이것은 효율적으로 작동하지 않습니다. 실버 라이트의 mousemove 이벤트는 OS에서 좌표가있는 신호를 보내기 위해 기다립니다. 운영 체제는 매우 빠르게 움직이는 경우 움직이는 모든 단일 지점에 대해 이벤트를 실행하지 않습니다. 대부분의 OS는 기계 상태를 검사하는 무한 루프를 실행합니다. 이러한 루프가 빠르면 모든 지점에 대해 mousemove를 선택합니다. 마우스가 0.001ms에서 (1,1)에서 (20,20)으로 이동하면 OS가 (10,10)에서 이벤트를 호출하거나 루프가 시간에 맞지 않으면 전혀 작동하지 않습니다.

속도를 높이려면 mousemove의 코드를 줄이거 나 비동기로 만드십시오.

또 다른 방법은 이미 수집 한 것을 기반으로 경로를 계산하는 수학적 방법입니다.

+1

알겠습니다. 이해가 잘됩니다. Bresenham의 라인 알고리즘을 사용하여 모든 포인트를 찾기 위해 좋은 기사를 찾았습니다. http://www.codeproject.com/KB/graphics/bresenham_revisited.aspx – japf

관련 문제