UIElement.ManipulationDelta イベント

定義

操作中に入力デバイスが位置を変更したときに発生します。

public:
 event EventHandler<System::Windows::Input::ManipulationDeltaEventArgs ^> ^ ManipulationDelta;
public event EventHandler<System.Windows.Input.ManipulationDeltaEventArgs> ManipulationDelta;
member this.ManipulationDelta : EventHandler<System.Windows.Input.ManipulationDeltaEventArgs> 
Public Custom Event ManipulationDelta As EventHandler(Of ManipulationDeltaEventArgs) 

イベントの種類

EventHandler<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

注釈

イベントは、操作中にユーザーが指を画面の上にドラッグし、慣性が発生した場合に複数回 ManipulationDelta 発生します。 プロパティを使用 IsInertial して、慣性の間にイベントが発生するかどうかを確認できます。

イベントが発生した ManipulationDelta の要素は、イベントが発生した場合に影響を受け取る必要があります。 操作する要素にロジックを指定する必要があります。 型の プロパティと プロパティには、操作の位置がどのように変化し、オブジェクトの移動、サイズ変更、または回転と解釈されるのかについてのデータ CumulativeManipulation DeltaManipulation ManipulationDelta が含まれている。 その情報は、操作する要素に適用します。

操作の詳細については、「入力の概要」 を参照してください。 操作に応答するアプリケーションの例については、「チュートリアル: 初めてのタッチ アプリケーションの作成 」を参照してください

ルーティングされたイベント情報

識別子フィールド ManipulationDeltaEvent
ルーティング戦略 バブル
代理人 EventHandler<TEventArgs> 型の ManipulationDeltaEventArgs

適用対象