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 |
Возвращает или задает связанный с этим RoutedEventArgs экземпляромRoutedEvent. (Унаследовано от 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) |