Sdílet prostřednictvím


ManipulationDeltaEventArgs Třída

Definice

Poskytuje data pro událost 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
Dědičnost
ManipulationDeltaEventArgs

Příklady

Následující příklad ukazuje obslužnou rutinu ManipulationDelta události pro událost. Příklad používá DeltaManipulation vlastnost k přesunutí, změně velikosti a otočení objektu Rectangle. Příklad také zkontroluje, jestli ManipulationDelta došlo k události během nečinnosti a zda se obdélník dotýká okraje okna. Pokud jsou tyto případy pravdivé, aplikace zastaví manipulaci, aby zabránila obdélníku opustit viditelnou oblast aplikace. Tento příklad je součástí většího příkladu v návodu: Vytvoření první dotykové aplikace.

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

Poznámky

Třída ManipulationDeltaEventArgs obsahuje data o změnách v pozici manipulace. Vlastnost DeltaManipulation obsahuje změny, ke kterým došlo od poslední ManipulationDelta události. Vlastnost CumulativeManipulation obsahuje celkové změny, ke kterým došlo při aktuální manipulaci. Pomocí jedné z těchto vlastností transformujete manipulovaný objekt.

Manipulaci můžete ukončit voláním Complete metody nebo vynucením manipulace do nečinnosti voláním StartInertia metody.

Vlastnosti

Name Description
CumulativeManipulation

Získá kumulované změny aktuální manipulace.

DeltaManipulation

Získá nejnovější změny aktuální manipulace.

Device

Získá vstupní zařízení, které iniciovalo tuto událost.

(Zděděno od InputEventArgs)
Handled

Získá nebo nastaví hodnotu, která označuje aktuální stav zpracování událostí pro směrovanou událost při cestě trasu.

(Zděděno od RoutedEventArgs)
IsInertial

Získá hodnotu, která určuje, zda ManipulationDelta událost nastane během nečinnosti.

ManipulationContainer

Získá kontejner, který definuje souřadnice pro manipulaci.

ManipulationOrigin

Získá bod, ze kterého manipulace vznikla.

Manipulators

Získá kolekci objektů, které představují dotykové kontakty pro manipulaci.

OriginalSource

Získá původní zdroj sestavy určený čistým testováním hitů před případnou Source úpravou nadřazenou třídou.

(Zděděno od RoutedEventArgs)
RoutedEvent

Získá nebo nastaví přidruženou k RoutedEvent této RoutedEventArgs instanci.

(Zděděno od RoutedEventArgs)
Source

Získá nebo nastaví odkaz na objekt, který vyvolal událost.

(Zděděno od RoutedEventArgs)
Timestamp

Získá čas, kdy k této události došlo.

(Zděděno od InputEventArgs)
Velocities

Získá míru nejnovějších změn manipulace.

Metody

Name Description
Cancel()

Zruší manipulaci.

Complete()

Dokončí manipulaci bez nečinnosti.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
InvokeEventHandler(Delegate, Object)

Vyvolá obslužné rutiny událostí určitým způsobem, což může zvýšit efektivitu systému událostí.

(Zděděno od InputEventArgs)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
OnSetSource(Object)

Při přepsání v odvozené třídě poskytuje vstupní bod zpětného Source volání oznámení vždy, když se změní hodnota vlastnosti instance.

(Zděděno od RoutedEventArgs)
ReportBoundaryFeedback(ManipulationDelta)

Určuje, že manipulace překročila určité hranice.

StartInertia()

Začne inertnost manipulace ignorováním následných pohybu kontaktů a vyvoláním ManipulationInertiaStarting události.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro