2012-03-03 25 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

回答

相关问题