TouchDevice Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa uma única entrada de toque produzida por um dedo na tela de toque.
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 a seguir permite que você crie padrões simples em um Canvas arrastando dois dedos em uma tela sensível ao toque. Cada toque é representado por um TouchDevice no TouchEventArgs. O padrão é criado desenhando uma linha entre os pontos de toque fornecidos pelos toques. Este exemplo requer uma tela compatível com o Windows Touch.
A marcação a seguir cria a interface do usuário, que consiste em um Canvas centralizado em uma grade e anexa os manipuladores 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 a seguir manipula os eventos de toque. Quando um toque é pressionado no Canvas, o TouchDevice é capturado no Canvas. Quando o toque é levantado, o TouchDevice é liberado. Quando um toque se move no Canvas, o Id é verificado. Se a movimentação veio do primeiro toque, sua localização é registrada. Se a movimentação veio do segundo toque, uma linha é desenhada da posição do primeiro toque para a 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
Comentários
Normalmente, você acessa um TouchDevice usando a TouchEventArgs.TouchDevice propriedade . Um TouchDevice representa um único toque em uma tela. Se houver vários toques, use a Id propriedade para distinguir entre eles.
Observação
Essa classe contém uma demanda de herança no nível da classe que se aplica a todos os membros. Um SecurityException é gerado quando a classe derivada não tem permissão de confiança total. Para obter mais informações sobre demandas de segurança, consulte Vincular demandas e demandas de herança.
Construtores
TouchDevice(Int32) |
Chamado de construtores em classes derivadas para inicializar a classe TouchDevice. |
Propriedades
ActiveSource |
Obtém o PresentationSource que está relatando a entrada para este 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 contato de toque é direcionado. |
Dispatcher |
Obtém o Dispatcher ao qual este DispatcherObject está associado. (Herdado de DispatcherObject) |
Id |
Obtém o identificador exclusivo do TouchDevice conforme fornecido pelo sistema operacional. |
IsActive |
Obtém um valor que indica se o dispositivo está ativo. |
Target |
Obtém o elemento que recebe entrada do TouchDevice. |
Métodos
Activate() |
Adiciona o TouchDevice ao sistema de mensagens de entrada. |
Capture(IInputElement) |
Captura um toque para o elemento especificado usando o modo de captura Element. |
Capture(IInputElement, CaptureMode) |
Captura um toque para o elemento especificado usando o CaptureMode especificado. |
CheckAccess() |
Determina se o thread de chamada 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 a função de hash padrão. (Herdado de Object) |
GetIntermediateTouchPoints(IInputElement) |
Quando substituído em uma classe derivada, retorna todos os pontos de toque coletados entre os eventos de toque mais recentes e anteriores. |
GetTouchPoint(IInputElement) |
Retorna a posição atual do dispositivo de toque 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 Object atual. (Herdado de Object) |
OnCapture(IInputElement, CaptureMode) |
Chamado quando um toque é capturado para um elemento. |
OnManipulationEnded(Boolean) |
Chamado quando uma manipulação terminou. |
OnManipulationStarted() |
Chamado quando uma manipulação é iniciada. |
ReportDown() |
Relata que um toque é pressionado em um elemento. |
ReportMove() |
Relata um toque está se movendo em um elemento. |
ReportUp() |
Relata que um toque foi removido de um elemento. |
SetActiveSource(PresentationSource) |
Define o PresentationSource que está relatando a entrada para este dispositivo. |
Synchronize() |
Força o TouchDevice a sincronizar a interface do usuário com os pontos de contato subjacentes. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
VerifyAccess() |
Impõe que o thread de chamada tenha acesso a este DispatcherObject. (Herdado de DispatcherObject) |
Eventos
Activated |
Ocorre quando o TouchDevice é adicionado ao sistema de mensagens de entrada. |
Deactivated |
Ocorre quando o TouchDevice é removido do sistema de mensagens de entrada. |
Updated |
Ocorre quando uma mensagem de toque é enviada. |
Implantações explícitas de interface
IManipulator.GetPosition(IInputElement) |
Retorna a posição do objeto IManipulator. |
IManipulator.Id |
Obtém o identificador exclusivo do TouchDevice conforme fornecido pelo sistema operacional. |
IManipulator.ManipulationEnded(Boolean) |
Ocorre quando uma manipulação terminou. |