我如何在类似地图的应用程序上管理ManipulationDelta?

时间:2012-03-03 10:06:58

标签: windows-phone-7 maps gestures

我正在尝试创建像WP7地图这样的地图应用程序。我知道在WPF中通过MatrixTransform管理地图画布手势很简单,但WP7的MatrixTransform版本功能较少。 是否有任何模式如何管理所有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 = new ScaleTransform();并且必须改进以管理画布的位置

  • 用手指移动地图。第一步看起来像:

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

其中_translation = new TranslateTransform();

  • 在Pan,Pinch和Stretch之后制作一些动态

目前没有实现,但我正在考虑ManipulationCompleted,其中添加一些代码以更自然的方式“继续”手势。

我正在寻找管理此功能的典型解决方案,可能是我的方式错了而不是通过ManipulationDelta

1 个答案:

答案 0 :(得分:0)

经过一番研究后,我决定使用此行为添加多点触控http://gallery.expression.microsoft.com/MultiTouch/

如果出现问题我可以看到反映的代码并创建类似的东西