2012-03-03 2 views
1

WP7지도와 같은지도 응용 프로그램을 만들려고합니다. WPF에서는 MatrixTransform을 통해지도 캔버스 제스처를 관리하는 것이 간단하지만 WP7의 MatrixTransform 버전은 기능이 적습니다. 에지도와 같은 응용 프로그램에서 ManipulationDelta를 어떻게 관리 할 수 ​​있습니까?

  • 확대 및 축소 : 는 모든 ManipulationDelta 이벤트를 관리하는 방법에 어떤 패턴있다. 지금은 그런 식으로합니다

    var maxScale = Math.Max(
        args.DeltaManipulation.Scale.X, 
        args.DeltaManipulation.Scale.Y); 
    
    if (Math.Abs(maxScale - 0) > 0.0001 && 
        ((maxScale < 1 && _scale.ScaleX > MIN_SCALE) || 
        (maxScale > 1 && _scale.ScaleX < MAX_SCALE))) 
    { 
        _scale.ScaleX *= maxScale; 
        _scale.ScaleY *= maxScale; 
    } 
    

곳 _scale = 새로운 ScaleTransform(); 캔버스의 위치를 ​​관리하기 위해 개선되어야합니다.

  • 손가락으로지도 이동. 첫 번째 단계까지 그것은 보이는 것 같은 :

    _translation.X += args.DeltaManipulation.Translation.X 
        * _scale.ScaleX; 
    
    _translation.Y += args.DeltaManipulation.Translation.Y 
        * _scale.ScaleX; 
    

곳 _translation = 새 TranslateTransform();

  • 는 팬, 핀치 후 일부 동적 확인하고 스트레치

없는 현재의 구현,하지만 난 더 자연스러운 방법으로 제스처 "계속"몇 가지 코드를 추가 참고 : ManipulationCompleted에서 찾고 있어요. 나는이 기능을 관리하는 일반적인 솔루션을 찾고 있어요

은, 내 방식이 잘못되지 ManipulationDelta

+0

프레임 워크와 함께 제공되는 MapControl을 사용하지 않는 이유는 무엇입니까? –

답변

0

을 통해 약간의 연구 후 나는 멀티 터치 추가하려면이 동작을 사용하기로 결정했습니다 수 있습니다 http://gallery.expression.microsoft.com/MultiTouch/

문제가 발생하면 반사 된 코드를보고 그와 같은 것을 만들 수 있습니다.

관련 문제