UIElement.ManipulationDelta Händelse
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Händelsen inträffar när indataenheten ändrar position under en manipulering.
public:
event EventHandler<System::Windows::Input::ManipulationDeltaEventArgs ^> ^ ManipulationDelta;
public event EventHandler<System.Windows.Input.ManipulationDeltaEventArgs> ManipulationDelta;
member this.ManipulationDelta : EventHandler<System.Windows.Input.ManipulationDeltaEventArgs>
Public Custom Event ManipulationDelta As EventHandler(Of ManipulationDeltaEventArgs)
Händelsetyp
Exempel
I följande exempel visas en händelsehanterare för ManipulationDelta händelsen. I exemplet används egenskapen DeltaManipulation för att flytta, ändra storlek på och rotera en Rectangle. Exemplet kontrollerar också om händelsen ManipulationDelta inträffade under trögheten och om rektangeln vidrör kanten av ett fönster. Om dessa fall är sanna stoppar programmet manipuleringen för att förhindra att rektangeln lämnar programmets synliga område. Det här exemplet är en del av ett större exempel i Genomgång: Skapa ditt First Touch-program.
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
Kommentarer
Händelsen ManipulationDelta inträffar flera gånger när användaren drar fingrarna över skärmen under en manipulering och igen när tröghet inträffar. Du kan använda IsInertial egenskapen för att kontrollera om händelsen inträffar under trögheten.
Elementet på med ManipulationDelta händelsen inträffar påverkas inte på något sätt när händelsen inträffar. Du måste ange logiken för det element som ska manipuleras. CumulativeManipulation Egenskaperna ochDeltaManipulation, som är av typen ManipulationDelta, innehåller data om hur manipuleringarnas position ändras och tolkas som att flytta, ändra storlek på eller rotera ett objekt. Du tillämpar den informationen på det element som ska manipuleras.
Mer information om manipuleringar finns i Översikt över indata. Ett exempel på ett program som svarar på manipulationer finns i Genomgång: Skapa ditt First Touch-program.
Information om dirigerad händelse
| Objekt | Value |
|---|---|
| Identifierarfält | ManipulationDeltaEvent |
| Routningsstrategi | Bubblande |
| Delegera | EventHandler<TEventArgs> av typen ManipulationDeltaEventArgs. |