Я думал о том, чтобы сохранить количество пикселей, которые пользователь перетаскивал на экране, сохраняя сумму дельты, возвращенной в объекте gestSample, но эти дельты кажутся непоследовательными:
EnabledGestures = GestureType.HorizontalDrag | GestureType.DragComplete;
foreach (GestureSample gestureSample in input.Gestures)
{
if (gestureSample.GestureType == GestureType.HorizontalDrag)
{
_dragOffset += gestureSample.Delta.X;
System.Diagnostics.Debug.WriteLine("drag: " + _dragOffset + " - delta: " + gestureSample.Delta + " pos; " + gestureSample.Position);
}
}
Приведенный выше код отображает следующее:
- drag: 0 - delta: {X: 0 Y: 0} pos; {X: 692 Y: 414}
- drag: -4 - delta: {X: -4 Y: 0} pos; {X: 683 Y: 415}
- drag: -6 - delta: {X: -2 Y: 0} pos; { X: 676 Y: 415}
- перетаскивание: -8 - дельта: { X: -2 Y: 0} поз; { X: 669 Y: 415}
- drag: -11 - delta: {X: -3 Y: 0} pos; {X: 658 Y: 415}
- drag: -15 - delta: {X: -4 Y: 0} pos; {X: 644 Y: 415}
Абсолютная позиция GestureSample смещена на -7 пикселей, но дельта сообщает только -2!
Это происходит как на эмуляторе, так и на настоящем устройстве WP7. Является ли моя интерпретация дельты неверной, и не следует ли мне полагаться на нее?