2012-03-03 23 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? – 2012-03-04 13:09:47

回答

相關問題