Я пытаюсь создать приложение карт, такое как Карты WP7. Я знаю, что в 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 = новый ScaleTransform(); и его нужно улучшить, чтобы управлять положением холста
Перемещение карты пальцем. На первом этапе это выглядит так:
_translation.X += args.DeltaManipulation.Translation.X * _scale.ScaleX; _translation.Y += args.DeltaManipulation.Translation.Y * _scale.ScaleX;
где _translation = новый TranslateTransform();
- Сделайте немного динамики после Pan, Pinch and Stretch
текущей реализации нет, но я просматриваю ManipulationCompleted, где добавить некоторый код для «продолжения» жестов более естественным образом.
Я ищу типичное решение для управления этими функциями, может быть, я ошибаюсь, а не через ManipulationDelta.