Leer en inglés

Compartir a través de


UIElement.ManipulationDelta Evento

Definición

Se produce cuando el dispositivo de entrada cambia de posición durante una manipulación.

C#
public event EventHandler<System.Windows.Input.ManipulationDeltaEventArgs> ManipulationDelta;

Tipo de evento

Ejemplos

En el ejemplo siguiente se muestra un controlador de eventos para el ManipulationDelta evento. En el ejemplo se usa la DeltaManipulation propiedad para mover, cambiar el tamaño y girar .Rectangle En el ejemplo también se comprueba si el evento se produjo durante la ManipulationDelta inercia y si el rectángulo está tocando el borde de una ventana. Si esos casos son true, la aplicación detiene la manipulación para evitar que el rectángulo salga del área visible de la aplicación. Este ejemplo forma parte de un ejemplo más grande en Walkthrough: Creating Your First Touch Application.

C#
void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    
    // Get the Rectangle and its RenderTransform matrix.
    Rectangle rectToMove = e.OriginalSource as Rectangle;
    Matrix rectsMatrix = ((MatrixTransform)rectToMove.RenderTransform).Matrix;

    // Rotate the Rectangle.
    rectsMatrix.RotateAt(e.DeltaManipulation.Rotation, 
                         e.ManipulationOrigin.X, 
                         e.ManipulationOrigin.Y);

    // Resize the Rectangle.  Keep it square 
    // so use only the X value of Scale.
    rectsMatrix.ScaleAt(e.DeltaManipulation.Scale.X, 
                        e.DeltaManipulation.Scale.X, 
                        e.ManipulationOrigin.X,
                        e.ManipulationOrigin.Y);

    // Move the Rectangle.
    rectsMatrix.Translate(e.DeltaManipulation.Translation.X,
                          e.DeltaManipulation.Translation.Y);

    // Apply the changes to the Rectangle.
    rectToMove.RenderTransform = new MatrixTransform(rectsMatrix);

    Rect containingRect =
        new Rect(((FrameworkElement)e.ManipulationContainer).RenderSize);

    Rect shapeBounds =
        rectToMove.RenderTransform.TransformBounds(
            new Rect(rectToMove.RenderSize));

    // Check if the rectangle is completely in the window.
    // If it is not and intertia is occuring, stop the manipulation.
    if (e.IsInertial && !containingRect.Contains(shapeBounds))
    {
        e.Complete();
    }

    e.Handled = true;
}

Comentarios

El ManipulationDelta evento se produce varias veces cuando el usuario arrastra los dedos sobre la pantalla durante una manipulación y otra vez cuando se produce la inercia. Puede usar la IsInertial propiedad para comprobar si el evento se está produciendo durante la inercia.

El elemento en con ManipulationDelta el evento no se ve afectado de ninguna manera cuando se produce el evento. Debe proporcionar la lógica al elemento que se va a manipular. Las CumulativeManipulation propiedades y DeltaManipulation , que son de tipo ManipulationDelta, contienen datos sobre cómo cambia la posición de las manipulaciones e interpretan como movimiento, cambio de tamaño o rotación de un objeto. Se aplica esa información al elemento que se va a manipular.

Para obtener más información sobre las manipulaciones, consulte Introducción a la entrada. Para obtener un ejemplo de una aplicación que responde a las manipulaciones, consulte Tutorial: Creación de la primera aplicación táctil.

Información sobre eventos enrutados

Campo identificador ManipulationDeltaEvent
Estrategia de enrutamiento Burbujeante
Delegado EventHandler<TEventArgs> de tipo ManipulationDeltaEventArgs.

Se aplica a

Producto Versiones
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9