Поделиться через


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
Наследование
ManipulationDeltaEventArgs

Примеры

В следующем примере показан обработчик событий для 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)

Применяется к