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