Как я могу управлять ManipulationDelta на картоподобном приложении? - PullRequest
1 голос
/ 03 марта 2012

Я пытаюсь создать приложение карт, такое как WP7 Maps. Я знаю, что в WPF управлять жестами холста на карте с помощью MatrixTransform просто, но версия MatrixTransform для WP7 менее функциональна. Есть ли шаблоны как управлять всеми событиями 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 голосов
/ 06 марта 2012

После небольшого исследования я решил использовать это поведение для добавления мультитача http://gallery.expression.microsoft.com/MultiTouch/

Если что-то пойдет не так, я могу просто посмотреть на отраженный код и создать что-то подобное

...