ManipulationDeltaEventArgs Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет данные о событии 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
- Наследование
Примеры
В следующем примере показан обработчик событий для ManipulationDelta события . В примере свойство используется DeltaManipulation для перемещения, изменения размера и поворота Rectangleобъекта . В примере также проверяется, произошло ли ManipulationDelta событие во время инерции и касается ли прямоугольник края окна. Если эти случаи верны, приложение останавливает манипуляцию, чтобы предотвратить выход прямоугольника из видимой области приложения. Этот пример является частью более крупного примера в разделе Пошаговое руководство. Создание первого сенсорного приложения.
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
Комментарии
Класс ManipulationDeltaEventArgs содержит данные об изменениях положения манипуляции. Свойство DeltaManipulation содержит изменения, произошедшие с момента последнего ManipulationDelta события. Свойство CumulativeManipulation содержит общее количество изменений, произошедших для текущей манипуляции. Одно из этих свойств используется для преобразования объекта, с которыми выполняется обработка.
Вы можете завершить манипуляцию, вызвав Complete метод , или заставить манипуляцию в инерцию StartInertia , вызвав метод .
Свойства
CumulativeManipulation |
Получает накопленные изменения текущей манипуляции. |
DeltaManipulation |
Получает последние изменения текущей манипуляции. |
Device |
Получает устройство ввода, инициировавшее это событие. (Унаследовано от InputEventArgs) |
Handled |
Получает или задает значение, обозначающее текущее состояние обработки перенаправленного события при перемещении по маршруту. (Унаследовано от RoutedEventArgs) |
IsInertial |
Получает значение, показывающее, происходит ли событие ManipulationDelta во время инерции. |
ManipulationContainer |
Получает контейнер, определяющий координаты манипуляции. |
ManipulationOrigin |
Получает точку, с которой началась манипуляция. |
Manipulators |
Получает коллекцию объектов, представляющих сенсорные контакты для обработки. |
OriginalSource |
Возвращает исходный источник отчетов, определяемый чистой проверкой нажатия до какой-либо возможной корректировки Source родительским классом. (Унаследовано от RoutedEventArgs) |
RoutedEvent |
Возвращает или задает объект RoutedEvent, связанный с этим экземпляром RoutedEventArgs. (Унаследовано от RoutedEventArgs) |
Source |
Получает или задает ссылку на объект, создавший событие. (Унаследовано от RoutedEventArgs) |
Timestamp |
Получает время, когда произошло данное событие. (Унаследовано от InputEventArgs) |
Velocities |
Получает скорости последних изменений в манипуляции. |
Методы
Cancel() |
Отменяет операцию. |
Complete() |
Завершает манипуляцию без инерции. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
InvokeEventHandler(Delegate, Object) |
Вызывает обработчики событий способом, зависящим от типа, что может повысить эффективность системы событий. (Унаследовано от InputEventArgs) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
OnSetSource(Object) |
При переопределении в производном классе предоставляет точку входа обратного вызова для уведомления в случае изменения значения свойства Source в экземпляре. (Унаследовано от RoutedEventArgs) |
ReportBoundaryFeedback(ManipulationDelta) |
Указывает, что манипуляция вышла за определенные границы. |
StartInertia() |
Запускает инерцию для операции, игнорируя последующие контактные движения и порождая событие ManipulationInertiaStarting. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |