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 在惯性期间发生,以及矩形是否触摸窗口的边缘。 如果这些情况为 true,应用程序将停止操作,以防止矩形离开应用程序的可见区域。 此示例是 演练:创建第一个触摸应用程序中较大示例的一部分。

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)

适用于