次の方法で共有


ManipulationCompletedEventHandler 代理人

定義

ManipulationCompleted および関連イベントを処理するメソッドを表します。

public delegate void ManipulationCompletedEventHandler(Platform::Object ^ sender, ManipulationCompletedRoutedEventArgs ^ e);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(955206415, 5368, 17119, 154, 30, 164, 188, 196, 175, 119, 244)]
class ManipulationCompletedEventHandler : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(955206415, 5368, 17119, 154, 30, 164, 188, 196, 175, 119, 244)]
public delegate void ManipulationCompletedEventHandler(object sender, ManipulationCompletedRoutedEventArgs e);
Public Delegate Sub ManipulationCompletedEventHandler(sender As Object, e As ManipulationCompletedRoutedEventArgs)

パラメーター

sender
Object

Platform::Object

IInspectable

ハンドラーがアタッチされているオブジェクト。

e
ManipulationCompletedRoutedEventArgs

イベントのイベント データ。

属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

次のコード例は 、入力サンプルのシナリオ 4 を示しています。 このコードでは、ManipulationStarting、ManipulationStartedManipulationDeltaManipulationInertiaStartingおよび ManipulationCompleted イベントを使用して直接操作するためのいくつかの使用パターンを示します。

private TransformGroup _transformGroup;
private MatrixTransform _previousTransform;
private CompositeTransform _compositeTransform;
private bool forceManipulationsToEnd;

public Scenario4()
{
    this.InitializeComponent();
    forceManipulationsToEnd = false;
    ManipulateMe.ManipulationStarting += 
        new ManipulationStartingEventHandler(
            ManipulateMe_ManipulationStarting);
    ManipulateMe.ManipulationStarted += 
        new ManipulationStartedEventHandler(
            ManipulateMe_ManipulationStarted);
    ManipulateMe.ManipulationDelta += 
        new ManipulationDeltaEventHandler(
            ManipulateMe_ManipulationDelta);
    ManipulateMe.ManipulationCompleted += 
        new ManipulationCompletedEventHandler(
            ManipulateMe_ManipulationCompleted);
    ManipulateMe.ManipulationInertiaStarting += 
        new ManipulationInertiaStartingEventHandler(
            ManipulateMe_ManipulationInertiaStarting);
    InitManipulationTransforms();
}

private void InitManipulationTransforms()
{
    _transformGroup = new TransformGroup();
    _compositeTransform = new CompositeTransform();
    _previousTransform = new MatrixTransform() { 
        Matrix = Matrix.Identity };

    _transformGroup.Children.Add(_previousTransform);
    _transformGroup.Children.Add(_compositeTransform);

    ManipulateMe.RenderTransform = _transformGroup;
}

private void ManipulateMe_ManipulationStarting(object sender, 
    ManipulationStartingRoutedEventArgs e)
{
    forceManipulationsToEnd = false;
    e.Handled = true;
}

private void ManipulateMe_ManipulationStarted(
    object sender, ManipulationStartedRoutedEventArgs e)
{
    e.Handled = true;
}

private void ManipulateMe_ManipulationInertiaStarting(
    object sender, ManipulationInertiaStartingRoutedEventArgs e)
{
    e.Handled = true;
}

private void ManipulateMe_ManipulationDelta(
    object sender, ManipulationDeltaRoutedEventArgs e)
{
    if (forceManipulationsToEnd)
    {
        e.Complete();
        return;
    }

    _previousTransform.Matrix = _transformGroup.Value;

    Point center = _previousTransform.TransformPoint(
        new Point(e.Position.X, e.Position.Y));
    _compositeTransform.CenterX = center.X;
    _compositeTransform.CenterY = center.Y;

    _compositeTransform.Rotation = (e.Delta.Rotation * 180) / Math.PI;
    _compositeTransform.ScaleX = 
        _compositeTransform.ScaleY = e.Delta.Scale;
    _compositeTransform.TranslateX = e.Delta.Translation.X;
    _compositeTransform.TranslateY = e.Delta.Translation.Y;

    e.Handled = true;
}

private void ManipulateMe_ManipulationCompleted(object sender, 
    ManipulationCompletedRoutedEventArgs e)
{
    e.Handled = true;
}

private void Scenario4Reset(object sender, RoutedEventArgs e)
{
    Scenario4Reset();
}

void Scenario4Reset()
{
    forceManipulationsToEnd = true;
    ManipulateMe.RenderTransform = null;
    InitManipulationTransforms();
}
Private _transformGroup As TransformGroup
Private _previousTransform As MatrixTransform
Private _compositeTransform As CompositeTransform
Private forceManipulationsToEnd As Boolean

Public Sub New()
    Me.InitializeComponent()
    forceManipulationsToEnd = False
    AddHandler ManipulateMe.ManipulationStarting, AddressOf ManipulateMe_ManipulationStarting
    AddHandler ManipulateMe.ManipulationStarted, AddressOf ManipulateMe_ManipulationStarted
    AddHandler ManipulateMe.ManipulationDelta, AddressOf ManipulateMe_ManipulationDelta
    AddHandler ManipulateMe.ManipulationCompleted, AddressOf ManipulateMe_ManipulationCompleted
    InitManipulationTransforms()
End Sub

''' <summary>
''' Invoked when this page is about to be displayed in a Frame.
''' </summary>
''' <param name="e">Event data that describes how this page was reached.  The Parameter
''' property is typically used to configure the page.</param>
Protected Overrides Sub OnNavigatedTo(e As NavigationEventArgs)
End Sub

Private Sub InitManipulationTransforms()
    _transformGroup = New TransformGroup()
    _compositeTransform = New CompositeTransform()
    _previousTransform = New MatrixTransform() With { _
        .Matrix = Matrix.Identity _
    }

    _transformGroup.Children.Add(_previousTransform)
    _transformGroup.Children.Add(_compositeTransform)

    ManipulateMe.RenderTransform = _transformGroup
End Sub

Private Sub ManipulateMe_ManipulationStarting(sender As Object, e As ManipulationStartingRoutedEventArgs)
    forceManipulationsToEnd = False
    e.Handled = True
End Sub

Private Sub ManipulateMe_ManipulationStarted(sender As Object, e As ManipulationStartedRoutedEventArgs)
    e.Handled = True
End Sub

Private Sub ManipulateMe_ManipulationDelta(sender As Object, e As ManipulationDeltaRoutedEventArgs)
    If forceManipulationsToEnd Then
        e.Complete()
        Exit Sub
    End If

    _previousTransform.Matrix = _transformGroup.Value

    Dim center As Point = _previousTransform.TransformPoint(New Point(e.Position.X, e.Position.Y))
    _compositeTransform.CenterX = center.X
    _compositeTransform.CenterY = center.Y

    _compositeTransform.Rotation = (e.Delta.Rotation * 180) / Math.PI
    _compositeTransform.ScaleX = InlineAssignHelper(_compositeTransform.ScaleY, e.Delta.Scale)
    _compositeTransform.TranslateX = e.Delta.Translation.X
    _compositeTransform.TranslateY = e.Delta.Translation.Y

    e.Handled = True
End Sub

Private Sub ManipulateMe_ManipulationCompleted(sender As Object, e As ManipulationCompletedRoutedEventArgs)
    e.Handled = True
End Sub

Private Sub Scenario4ResetMethod(sender As Object, e As RoutedEventArgs)
    Reset()
End Sub

Private Sub Reset()
    forceManipulationsToEnd = True
    ManipulateMe.RenderTransform = Nothing
    InitManipulationTransforms()
End Sub
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
    target = value
    Return value
End Function

適用対象