0

次のようにイベントを使用してManipulationDeltaをドラッグしてCanvasいます。

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 に答える