がりらぼ

WindowsRuntimeの応援ブログ

タッチ入力を検知するには

タッチ入力

Windows8ではタッチファーストのアプリ設計のため、タッチに対応したデバイスではタッチ入力を検知することが容易になりました。

 

タッチ入力を検知するためにはタッチ入力を検知したいコントロールのPointerPressedイベントなどを検知して様々なPropertiesを見ます。

 

このようなXAMLを作ります。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Canvas x:Name="canvas" Margin="316,306,260,76" Background="#FFB67575">

    </Canvas>
    <StackPanel HorizontalAlignment="Left" Height="244" Margin="316,38,0,0" VerticalAlignment="Top" Width="768">
        <TextBlock x:Name="text_position" TextWrapping="Wrap" Text="TextBlock" FontSize="24"/>
       
        <TextBlock x:Name="text_isPointerOn" TextWrapping="Wrap" Text="TextBlock" FontSize="24"/>
    </StackPanel>
</Grid>

 

コンストラクタでタッチ入力を検知したいコントロールのPointerPressedイベントなどを登録します。

this.canvas.PointerPressed+=Canvas_PointerPressed;
this.canvas.PointerReleased+=Canvas_PointerReleased;
this.canvas.PointerMoved+=Canvas_PointerMoved;

 

PointerPressedイベントでタッチ入力押下を検知します。

private void Canvas_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    PointerPoint point=e.GetCurrentPoint(canvas);

    switch (point.PointerDevice.PointerDeviceType)
    {
        case PointerDeviceType.Pen:
            
            break;
        case PointerDeviceType.Mouse:
           
        case PointerDeviceType.Touch:
            text_isPointerOn.Text = string.Format("IsPointerOn={0}", true);
            break;
    }
    
}

 

PointerMovedイベントでタッチの移動を検知します。

private void Canvas_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    PointerPoint point = e.GetCurrentPoint(canvas);

    switch (point.PointerDevice.PointerDeviceType)
    {
        case PointerDeviceType.Pen:

            break;
        case PointerDeviceType.Mouse:
           
            break;
        case PointerDeviceType.Touch:
            text_position.Text = string.Format("Position={0},{1}", point.Position.X, point.Position.Y);
            break;
    }
}

 

PointerReleasedイベントでタッチの押上を検知します。

private void Canvas_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    PointerPoint point = e.GetCurrentPoint(canvas);

    switch (point.PointerDevice.PointerDeviceType)
    {
        case PointerDeviceType.Pen:

            break;
        case PointerDeviceType.Mouse:
           
            break;
        case PointerDeviceType.Touch:
            text_isPointerOn.Text = string.Format("IsPointerOn={0}", false);
            break;
    }
}

 

 

タッチ入力を検知するには | garicchi.com