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


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

Возвращает или задает объект 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)

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