Condividi tramite


ManipulationDeltaEventArgs Classe

Definizione

Fornisce i dati per l'evento ManipulationDelta.

public ref class ManipulationDeltaEventArgs sealed : System::Windows::Input::InputEventArgs
public sealed class ManipulationDeltaEventArgs : System.Windows.Input.InputEventArgs
type ManipulationDeltaEventArgs = class
    inherit InputEventArgs
Public NotInheritable Class ManipulationDeltaEventArgs
Inherits InputEventArgs
Ereditarietà
ManipulationDeltaEventArgs

Esempio

Nell'esempio seguente viene illustrato un gestore eventi per l'evento ManipulationDelta . Nell'esempio viene usata la DeltaManipulation proprietà per spostare, ridimensionare e ruotare un Rectangleoggetto . L'esempio verifica anche se l'evento si è verificato durante l'inerzia e se il ManipulationDelta rettangolo tocca il bordo di una finestra. Se questi casi sono true, l'applicazione arresta la manipolazione per impedire al rettangolo di uscire dall'area visibile dell'applicazione. Questo esempio fa parte di un esempio più ampio in Procedura dettagliata: Creazione della prima applicazione touch.

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;
}
Private Sub Window_ManipulationDelta(ByVal sender As Object, ByVal e As ManipulationDeltaEventArgs)

    ' Get the Rectangle and its RenderTransform matrix.
    Dim rectToMove As Rectangle = e.OriginalSource
    Dim rectTransform As MatrixTransform = rectToMove.RenderTransform
    Dim rectsMatrix As Matrix = rectTransform.Matrix


    ' Rotate the shape
    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 center
    rectsMatrix.Translate(e.DeltaManipulation.Translation.X,
                          e.DeltaManipulation.Translation.Y)

    ' Apply the changes to the Rectangle.
    rectTransform = New MatrixTransform(rectsMatrix)
    rectToMove.RenderTransform = rectTransform

    Dim container As FrameworkElement = e.ManipulationContainer
    Dim containingRect As New Rect(container.RenderSize)

    Dim shapeBounds As Rect = rectTransform.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 AndAlso Not containingRect.Contains(shapeBounds) Then
        e.Complete()
    End If

    e.Handled = True
End Sub

Commenti

La ManipulationDeltaEventArgs classe contiene dati sulle modifiche nella posizione di una manipolazione. La DeltaManipulation proprietà contiene le modifiche che si sono verificate dall'ultimo ManipulationDelta evento. La CumulativeManipulation proprietà contiene le modifiche totali che si sono verificate per la manipolazione corrente. Si usa una di queste proprietà per trasformare l'oggetto modificato.

È possibile terminare una manipolazione chiamando il Complete metodo o forzando la manipolazione in inerzia chiamando il StartInertia metodo .

Proprietà

CumulativeManipulation

Ottiene le modifiche accumulate della manipolazione corrente.

DeltaManipulation

Ottiene le modifiche più recenti della manipolazione corrente.

Device

Ottiene il dispositivo di input che ha avviato questo evento.

(Ereditato da InputEventArgs)
Handled

Ottiene o imposta un valore che indica lo stato presente della gestione degli eventi per un evento indirizzato quando percorre la route.

(Ereditato da RoutedEventArgs)
IsInertial

Ottiene un valore che indica se l'evento ManipulationDelta si verifica durante l'inerzia.

ManipulationContainer

Ottiene il contenitore che definisce le coordinate per la manipolazione.

ManipulationOrigin

Ottiene il punto da cui ha origine la manipolazione.

Manipulators

Ottiene un insieme di oggetti che rappresenta i contatti tocco per la modifica.

OriginalSource

Ottiene l'origine di segnalazione originale in base a quanto determinato dall'hit testing puro, prima di qualsiasi possibile modifica di Source da parte di una classe padre.

(Ereditato da RoutedEventArgs)
RoutedEvent

Ottiene o imposta l'oggetto RoutedEvent associato all'istanza di RoutedEventArgs.

(Ereditato da RoutedEventArgs)
Source

Ottiene o imposta un riferimento all'oggetto che ha generato l'evento.

(Ereditato da RoutedEventArgs)
Timestamp

Ottiene la data e l'ora in cui si è verificato l'evento.

(Ereditato da InputEventArgs)
Velocities

Ottiene la frequenza delle modifiche più recenti alla manipolazione.

Metodi

Cancel()

Annulla la modifica.

Complete()

Completa la modifica senza inerzia.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InvokeEventHandler(Delegate, Object)

Richiama i gestori eventi in una modalità specifica del tipo, che può aumentare l'efficienza del sistema di eventi.

(Ereditato da InputEventArgs)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnSetSource(Object)

Se sottoposto a override in una classe derivata, fornisce un punto di ingresso di callback di notifica a ogni modifica del valore della proprietà Source di un'istanza.

(Ereditato da RoutedEventArgs)
ReportBoundaryFeedback(ManipulationDelta)

Specifica che la modifica è andata oltre limiti determinati.

StartInertia()

Avvia l'inerzia sulla manipolazione ignorando i movimenti di contatto successivi e generando l'evento ManipulationInertiaStarting.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a