ManipulationDeltaEventArgs Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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) |