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 em uma tela sensível ao 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 na 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 uma Canvas centralização 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.TouchDeviceCanvas Quando o toque é levantado, ele TouchDevice é liberado. Quando um toque se move sobre o Canvas, o Id é verificado. Se a movimentação veio do primeiro toque, sua localização será 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 de 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 Demandas de link e demandas de herança.
Construtores
| Nome | Description |
|---|---|
| TouchDevice(Int32) |
Chamado de construtores em classes derivadas para inicializar a TouchDevice classe. |
Propriedades
| Nome | Description |
|---|---|
| ActiveSource |
Obtém a PresentationSource entrada de relatório 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 que o ponto de contato de toque está diretamente acabado. |
| Dispatcher |
Obtém o Dispatcher que DispatcherObject está associado. (Herdado de DispatcherObject) |
| Id |
Obtém o identificador exclusivo do TouchDevicesistema operacional, conforme fornecido pelo sistema operacional. |
| IsActive |
Obtém um valor que indica se o dispositivo está ativo. |
| Target |
Obtém o elemento que recebe a entrada do TouchDevice. |
Métodos
| Nome | Description |
|---|---|
| Activate() |
Adiciona o TouchDevice sistema de mensagens de entrada. |
| Capture(IInputElement, CaptureMode) |
Captura um toque para o elemento especificado usando o .CaptureMode |
| Capture(IInputElement) |
Captura um toque para o elemento especificado usando o Element modo de captura. |
| CheckAccess() |
Determina se o thread de chamada tem acesso a isso DispatcherObject. (Herdado de DispatcherObject) |
| Deactivate() |
Remove o TouchDevice 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 Objectatual. (Herdado de Object) |
| OnCapture(IInputElement, CaptureMode) |
Chamado quando um toque é capturado em 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 que um toque está se movendo entre um elemento. |
| ReportUp() |
Relata que um toque foi retirado de um elemento. |
| SetActiveSource(PresentationSource) |
Define a PresentationSource entrada de relatório para este dispositivo. |
| Synchronize() |
Força a TouchDevice sincronização da interface do usuário com pontos de toque 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 isso DispatcherObject. (Herdado de DispatcherObject) |
Eventos
| Nome | Description |
|---|---|
| Activated |
Ocorre quando o TouchDevice sistema de mensagens de entrada é adicionado. |
| Deactivated |
Ocorre quando o TouchDevice sistema de mensagens de entrada é removido. |
| Updated |
Ocorre quando uma mensagem de toque é enviada. |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IManipulator.GetPosition(IInputElement) |
Retorna a posição do IManipulator objeto. |
| IManipulator.Id |
Obtém o identificador exclusivo do TouchDevice conforme fornecido pelo sistema operacional. |
| IManipulator.ManipulationEnded(Boolean) |
Ocorre quando uma manipulação é encerrada. |