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. V příkladu se DeltaManipulation vlastnost používá k přesunutí, změně velikosti a otočení objektu Rectangle. Příklad také zkontroluje, jestli k ManipulationDelta události došlo během setrvačnosti a jestli 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í aplikace prvního dotykového ovládání.

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ý počet změn, ke kterým došlo při aktuální manipulaci. Jednu z těchto vlastností použijete k transformaci manipulovaného objektu.

Manipulaci můžete ukončit voláním Complete metody nebo vynutit manipulaci do setrvačnosti voláním StartInertia metody.

Vlastnosti

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ě.

(Zděděno od RoutedEventArgs)
IsInertial

Získá hodnotu, která označuje, zda ManipulationDelta událost nastane během setrvačnosti.

ManipulationContainer

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

ManipulationOrigin

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

Manipulators

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

OriginalSource

Získá původní zdroj sestav, jak je určeno čistým testováním výsledků, před jakoukoli možnou Source úpravou nadřazenou třídou.

(Zděděno od RoutedEventArgs)
RoutedEvent

Získá nebo nastaví přidružené 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 došlo k této události.

(Zděděno od InputEventArgs)
Velocities

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

Metody

Cancel()

Zruší manipulaci.

Complete()

Dokončí manipulaci bez setrvačnosti.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

Slouží jako výchozí hashovací funkce.

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

Získá aktuální Type instanci.

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

Vyvolá obslužné rutiny událostí způsobem specifickým pro typ, který může zvýšit efektivitu systému událostí.

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

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

(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 setrvačnost při manipulaci ignorováním následných pohybů 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