John Sourcer
John Sourcer

Reputation: 451

Touch manipulation move on initial offset issue

I'm using a ManipulationDelta event to drag a Canvas as follows:

private Point lastMovePosition;

private void MoveCanvas(ManipulationDeltaEventArgs e)
{
    var position = e.ManipulationOrigin;

    if (CanvasShareSwarm.Scale > 1) //Force zoom out limit to view all
    {
        CanvasShareSwarm.Offset -= position - lastMovePosition;
        lastMovePosition = position;
    }
}

This works but when the drag starts the Canvas always jumps back to what seems to be a previous position before moving. I suspect it has to do with my lastMovePosition point.

What could cause this?

Upvotes: 0

Views: 255

Answers (1)

Clemens
Clemens

Reputation: 128181

I guess you would have to initialize the lastMovePosition field in a ManipulationStarted event handler:

private void OnManipulationStarted(object sender, ManipulationStartedEventArgs e)
{
    lastMovePosition = e.ManipulationOrigin;
}

Upvotes: 2

Related Questions