次の方法で共有


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 、現在の操作で発生した変更の合計が含まれます。 これらのプロパティの 1 つを使用して、操作されたオブジェクトを変換します。

メソッドを呼び出して操作を終了するか、 メソッドを 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)

適用対象