TouchDevice Classe

Definição

Representa uma única entrada tátil produzida por um dedo num ecrã tátil.

public ref class TouchDevice abstract : System::Windows::Input::InputDevice, System::Windows::Input::IManipulator
public abstract class TouchDevice : System.Windows.Input.InputDevice, System.Windows.Input.IManipulator
type TouchDevice = class
    inherit InputDevice
    interface IManipulator
Public MustInherit Class TouchDevice
Inherits InputDevice
Implements IManipulator
Herança
Implementações

Exemplos

O exemplo seguinte permite-lhe criar padrões simples num Canvas ecrã tátil, arrastando dois dedos num ecrã tátil. Cada toque é representado por um TouchDevice no TouchEventArgs. O padrão é criado desenhando uma linha entre os pontos de contacto fornecidos pelos toques. Este exemplo requer um ecrã compatível com Windows Touch.

A marcação seguinte cria a interface de utilizador, que consiste num Canvas que está centrado numa grelha, e anexa os gestores de eventos para os eventos de toque.

<Window x:Class="WpfTouchEventsSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="525" Width="525">
    <Grid>
        <Canvas x:Name="canvas1"
                Width="500" Height="500"
                Background="Black"
                TouchDown="canvas_TouchDown"
                TouchMove="canvas_TouchMove"
                TouchUp="canvas_TouchUp" />
    </Grid>
</Window>

O código seguinte trata dos eventos de toque. Quando um toque é pressionado no Canvas, o TouchDevice é capturado no Canvas. Quando o toque é levantado, é TouchDevice libertado. Quando um toque se move no Canvas, o Id é verificado. Se o movimento veio do primeiro toque, a sua localização é registada. Se o movimento veio do segundo toque, traça-se uma linha da posição do primeiro toque até à posição do segundo toque.

using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Windows.Controls;

namespace WpfTouchEventsSample
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        // Variables to track the first two touch points 
        // and the ID of the first touch point.
        private Point pt1, pt2 = new Point();
        private int firstTouchId = -1;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void canvas_TouchDown(object sender, TouchEventArgs e)
        {
            Canvas _canvas = (Canvas)sender as Canvas;
            if (_canvas != null)
            {
                _canvas.Children.Clear();
                e.TouchDevice.Capture(_canvas);

                // Record the ID of the first touch point if it hasn't been recorded.
                if (firstTouchId == -1)
                    firstTouchId = e.TouchDevice.Id;
            }
        }

        private void canvas_TouchMove(object sender, TouchEventArgs e)
        {
            Canvas _canvas = (Canvas)sender as Canvas;
            if (_canvas != null)
            {
                TouchPoint tp = e.GetTouchPoint(_canvas);
                // This is the first touch point; just record its position.
                if (e.TouchDevice.Id == firstTouchId)
                {
                    pt1.X = tp.Position.X;
                    pt1.Y = tp.Position.Y;
                }
                // This is not the first touch point; draw a line from the first point to this one.
                else if (e.TouchDevice.Id != firstTouchId)
                {
                    pt2.X = tp.Position.X;
                    pt2.Y = tp.Position.Y;

                    Line _line = new Line();
                    _line.Stroke = new RadialGradientBrush(Colors.White, Colors.Black);
                    _line.X1 = pt1.X;
                    _line.X2 = pt2.X;
                    _line.Y1 = pt1.Y;
                    _line.Y2 = pt2.Y;

                    _line.StrokeThickness = 2;
                    _canvas.Children.Add(_line);
                }
            }
        }

        private void canvas_TouchUp(object sender, TouchEventArgs e)
        {
            Canvas _canvas = (Canvas)sender as Canvas;
            if (_canvas != null && e.TouchDevice.Captured == _canvas)
            {
                _canvas.ReleaseTouchCapture(e.TouchDevice);
            }
        }
    }
}
Class MainWindow
    ' Variables to track the first two touch points 
    ' and the ID of the first touch point.
    Private pt1, pt2 As Point
    Private firstTouchId As Integer = -1
    ' Touch Down
    Private Sub canvas_TouchDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.TouchEventArgs)
        Dim _canvas As Canvas = CType(sender, Canvas)
        If (_canvas IsNot Nothing) Then
            _canvas.Children.Clear()
            e.TouchDevice.Capture(_canvas)

            ' Record the ID of the first touch point if it hasn't been recorded.
            If firstTouchId = -1 Then
                firstTouchId = e.TouchDevice.Id
            End If
        End If
    End Sub
    ' Touch Move
    Private Sub canvas_TouchMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.TouchEventArgs)
        Dim _canvas As Canvas = CType(sender, Canvas)
        If (_canvas IsNot Nothing) Then
            Dim tp = e.GetTouchPoint(_canvas)
            ' This is the first touch point; just record its position.
            If e.TouchDevice.Id = firstTouchId Then
                pt1.X = tp.Position.X
                pt1.Y = tp.Position.Y

                ' This is not the first touch point; draw a line from the first point to this one.
            ElseIf e.TouchDevice.Id <> firstTouchId Then
                pt2.X = tp.Position.X
                pt2.Y = tp.Position.Y

                Dim _line As New Line()
                _line.Stroke = New RadialGradientBrush(Colors.White, Colors.Black)
                _line.X1 = pt1.X
                _line.X2 = pt2.X
                _line.Y1 = pt1.Y
                _line.Y2 = pt2.Y

                _line.StrokeThickness = 2
                _canvas.Children.Add(_line)
            End If
        End If
    End Sub
    ' Touch Up
    Private Sub canvas_TouchUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.TouchEventArgs)
        Dim _canvas As Canvas = CType(sender, Canvas)
        If (_canvas IsNot Nothing AndAlso e.TouchDevice.Captured Is _canvas) Then
            _canvas.ReleaseTouchCapture(e.TouchDevice)

        End If
    End Sub
End Class

Observações

Normalmente, acede a um TouchDevice usando a propriedade TouchEventArgs.TouchDevice . A TouchDevice representa um único toque num ecrã. Se houver múltiplos toques, use a Id propriedade para distinguir entre eles.

Note

Esta classe contém uma exigência de herança ao nível da classe que se aplica a todos os membros. A SecurityException é lançado quando a classe derivada não tem permissão de confiança total. Para mais informações sobre exigências de segurança, consulte Exigências de Ligação e Exigências de Herança.

Construtores

Name Description
TouchDevice(Int32)

Chamado a partir de construtores em classes derivadas para inicializar a TouchDevice classe.

Propriedades

Name Description
ActiveSource

Recebe o PresentationSource que está a reportar a entrada deste dispositivo.

Captured

Obtém o elemento que capturou o TouchDevice.

CaptureMode

Obtém a política de captura do TouchDevice.

DirectlyOver

Obtém o elemento sobre o qual o ponto de contacto táctil está diretamente por cima.

Dispatcher

Percebe o Dispatcher que isto DispatcherObject está associado.

(Herdado de DispatcherObject)
Id

Obtém o identificador único do TouchDevice, conforme fornecido pelo sistema operativo.

IsActive

Recebe um valor que indica se o dispositivo está ativo.

Target

Obtém o elemento que recebe entrada do TouchDevice.

Métodos

Name Description
Activate()

Adiciona o TouchDevice ao sistema de mensagens de entrada.

Capture(IInputElement, CaptureMode)

Captura um toque no elemento especificado usando o .CaptureMode

Capture(IInputElement)

Captura um toque no elemento especificado usando o Element modo de captura.

CheckAccess()

Determina se o thread que chama tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)
Deactivate()

Remove o TouchDevice do sistema de mensagens de entrada.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetIntermediateTouchPoints(IInputElement)

Quando sobreposto numa classe derivada, devolve todos os pontos de contacto recolhidos entre os eventos de toque mais recentes e anteriores.

GetTouchPoint(IInputElement)

Devolve a posição atual do dispositivo tátil em relação ao elemento especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnCapture(IInputElement, CaptureMode)

Chamada quando um toque é capturado para um elemento.

OnManipulationEnded(Boolean)

Chamado quando uma manipulação termina.

OnManipulationStarted()

É chamado quando começa uma manipulação.

ReportDown()

Relata que um toque é pressionado num elemento.

ReportMove()

Relata que um toque está a mover-se através de um elemento.

ReportUp()

Relatos de que um toque foi retirado de um elemento.

SetActiveSource(PresentationSource)

Define o PresentationSource que está a reportar a entrada para este dispositivo.

Synchronize()

Força a TouchDevice sincronização da interface do utilizador com os pontos de contacto subjacentes.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
VerifyAccess()

Faz cumprir que o thread que chama tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)

evento

Name Description
Activated

Ocorre quando o TouchDevice é adicionado ao sistema de mensagens de entrada.

Deactivated

Ocorre quando é removido TouchDevice do sistema de mensagens de entrada.

Updated

Ocorre quando uma mensagem de toque é enviada.

Implementações de Interface Explícita

Name Description
IManipulator.GetPosition(IInputElement)

Devolve a posição do IManipulator objeto.

IManipulator.Id

Obtém o identificador único do TouchDevice conforme fornecido pelo sistema operativo.

IManipulator.ManipulationEnded(Boolean)

Ocorre quando uma manipulação termina.

Aplica-se a