Condividi tramite


ManipulationDeltaEventArgs Classe

Definizione

Fornisce 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 utilizzata la DeltaManipulation proprietà per spostare, ridimensionare e ruotare un oggetto Rectangle. L'esempio controlla inoltre se l'evento si è verificato durante l'inerzia ManipulationDelta e se il rettangolo sta toccando il bordo di una finestra. Se questi casi sono true, l'applicazione interrompe 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 apportate dopo l'ultimo ManipulationDelta evento. La CumulativeManipulation proprietà contiene le modifiche totali apportate per la manipolazione corrente. Per trasformare l'oggetto modificato, utilizzare una di queste proprietà.

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

Proprietà

Nome Descrizione
CumulativeManipulation

Ottiene le modifiche cumulative 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 corrente della gestione degli eventi per un evento indirizzato durante il viaggio della route.

(Ereditato da RoutedEventArgs)
IsInertial

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

ManipulationContainer

Ottiene il contenitore che definisce le coordinate per la manipolazione.

ManipulationOrigin

Ottiene il punto da cui ha avuto origine la manipolazione.

Manipulators

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

OriginalSource

Ottiene l'origine di creazione di report originale, come determinato dall'hit testing puro, prima di qualsiasi possibile Source rettifica da parte di una classe padre.

(Ereditato da RoutedEventArgs)
RoutedEvent

Ottiene o imposta l'oggetto RoutedEvent associato a questa RoutedEventArgs istanza.

(Ereditato da RoutedEventArgs)
Source

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

(Ereditato da RoutedEventArgs)
Timestamp

Ottiene l'ora in cui si è verificato questo evento.

(Ereditato da InputEventArgs)
Velocities

Ottiene la frequenza delle modifiche più recenti alla manipolazione.

Metodi

Nome Descrizione
Cancel()

Annulla la manipolazione.

Complete()

Completa la manipolazione 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 il Type dell'istanza corrente.

(Ereditato da Object)
InvokeEventHandler(Delegate, Object)

Richiama i gestori eventi in modo specifico del tipo, che può aumentare l'efficienza del sistema eventi.

(Ereditato da InputEventArgs)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnSetSource(Object)

Quando sottoposto a override in una classe derivata, fornisce un punto di ingresso di callback di notifica ogni volta che il valore della proprietà di un'istanza Source cambia.

(Ereditato da RoutedEventArgs)
ReportBoundaryFeedback(ManipulationDelta)

Specifica che la manipolazione ha superato determinati limiti.

StartInertia()

Inizia 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