Udostępnij za pośrednictwem


ManipulationDeltaEventArgs Klasa

Definicja

Udostępnia dane dla zdarzenia 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
Dziedziczenie
ManipulationDeltaEventArgs

Przykłady

W poniższym przykładzie przedstawiono procedurę obsługi zdarzeń dla ManipulationDelta zdarzenia. W przykładzie użyto DeltaManipulation właściwości do przenoszenia, zmieniania rozmiaru i obracania elementu Rectangle. Przykład sprawdza również, czy ManipulationDelta zdarzenie wystąpiło podczas inercji i czy prostokąt dotyka krawędzi okna. Jeśli te przypadki są prawdziwe, aplikacja zatrzymuje manipulację, aby uniemożliwić pozostawienie widocznego obszaru aplikacji. Ten przykład jest częścią większego przykładu w przewodniku: tworzenie pierwszej aplikacji dotykowej.

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

Uwagi

Klasa ManipulationDeltaEventArgs zawiera dane dotyczące zmian w pozycji manipulowania. Właściwość DeltaManipulation zawiera zmiany, które wystąpiły od czasu ostatniego ManipulationDelta zdarzenia. Właściwość CumulativeManipulation zawiera łączne zmiany, które wystąpiły podczas bieżącej manipulacji. Jedna z tych właściwości służy do przekształcania manipulowanego obiektu.

Manipulowanie można zakończyć przez wywołanie Complete metody lub wymusić manipulację w inercji, wywołując metodę StartInertia .

Właściwości

CumulativeManipulation

Pobiera skumulowane zmiany bieżącej manipulacji.

DeltaManipulation

Pobiera najnowsze zmiany bieżącej manipulacji.

Device

Pobiera urządzenie wejściowe, które zainicjowało to zdarzenie.

(Odziedziczone po InputEventArgs)
Handled

Pobiera lub ustawia wartość wskazującą obecny stan obsługi zdarzeń dla zdarzenia kierowanego podczas podróży trasy.

(Odziedziczone po RoutedEventArgs)
IsInertial

Pobiera wartość wskazującą, czy ManipulationDelta zdarzenie występuje podczas inercji.

ManipulationContainer

Pobiera kontener, który definiuje współrzędne manipulowania.

ManipulationOrigin

Pobiera punkt, z którego pochodzi manipulacja.

Manipulators

Pobiera kolekcję obiektów reprezentujących kontakty dotykowe do manipulowania.

OriginalSource

Pobiera oryginalne źródło raportowania określone przez testowanie trafień, przed ewentualnym Source dostosowaniem przez klasę nadrzędną.

(Odziedziczone po RoutedEventArgs)
RoutedEvent

Pobiera lub ustawia skojarzone z tym RoutedEventArgs wystąpieniemRoutedEvent.

(Odziedziczone po RoutedEventArgs)
Source

Pobiera lub ustawia odwołanie do obiektu, który wzbudził zdarzenie.

(Odziedziczone po RoutedEventArgs)
Timestamp

Pobiera czas wystąpienia tego zdarzenia.

(Odziedziczone po InputEventArgs)
Velocities

Pobiera stawki najnowszych zmian manipulacji.

Metody

Cancel()

Anuluje manipulowanie.

Complete()

Kończy manipulowanie bez inercji.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
InvokeEventHandler(Delegate, Object)

Wywołuje programy obsługi zdarzeń w sposób specyficzny dla typu, co może zwiększyć wydajność systemu zdarzeń.

(Odziedziczone po InputEventArgs)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnSetSource(Object)

Po zastąpieniu w klasie pochodnej zapewnia punkt wejścia wywołania zwrotnego powiadomień za każdym razem, gdy wartość Source właściwości wystąpienia ulegnie zmianie.

(Odziedziczone po RoutedEventArgs)
ReportBoundaryFeedback(ManipulationDelta)

Określa, że manipulacja wykracza poza pewne granice.

StartInertia()

Rozpoczyna inercję manipulacji, ignorując kolejne ruchy kontaktowe i podnosząc ManipulationInertiaStarting zdarzenie.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy