TouchDevice Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |