0

我正在使用一个ManipulationDelta事件来拖动 aCanvas如下:

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;
    }
}

这可行,但是当拖动开始时,Canvas总是会跳回到移动之前似乎是以前的位置。我怀疑这与我的lastMovePosition观点有关。

什么可能导致这种情况?

4

1 回答 1

2

我猜您必须在ManipulationStarted事件处理程序中初始化该lastMovePosition字段:

private void OnManipulationStarted(object sender, ManipulationStartedEventArgs e)
{
    lastMovePosition = e.ManipulationOrigin;
}
于 2013-02-03T15:34:18.873 回答