TouchDevice Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa una única entrada táctil generada por un dedo en una pantalla táctil.
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
- Herencia
- Implementaciones
Ejemplos
En el ejemplo siguiente se pueden crear patrones simples en un Canvas elemento arrastrando dos dedos en una pantalla táctil. Cada entrada táctil se representa mediante un TouchDevice objeto en .TouchEventArgs El patrón se crea dibujando una línea entre los puntos táctiles proporcionados por los toques. En este ejemplo se requiere una pantalla compatible con Windows Touch.
El marcado siguiente crea la interfaz de usuario, que consta de un Canvas que se centra en una cuadrícula y adjunta los controladores de eventos para los eventos táctiles.
<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>
El código siguiente controla los eventos táctiles. Cuando se presiona un toque en Canvas, TouchDevice se captura en .Canvas Cuando se levanta el toque, TouchDevice se libera . Cuando un toque se mueve en Canvas, se comprueba .Id Si el movimiento procede del primer toque, se registra su ubicación. Si el movimiento procede del segundo toque, se dibuja una línea desde la posición del primer toque hasta la posición del 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
Comentarios
Normalmente, se accede a mediante TouchDevice la TouchEventArgs.TouchDevice propiedad . TouchDevice Representa un solo toque en una pantalla. Si hay varios toques, utilice la Id propiedad para distinguir entre ellos.
Nota
Esta clase contiene una demanda de herencia en el nivel de clase que se aplica a todos los miembros. Se SecurityException produce una excepción cuando la clase derivada no tiene permiso de plena confianza. Para obtener más información sobre las demandas de seguridad, consulte Link Demand and Inheritance Demand.
Constructores
TouchDevice(Int32) |
Se llama desde constructores de clases derivadas para inicializar la clase TouchDevice. |
Propiedades
ActiveSource |
Obtiene el objeto PresentationSource que proporciona la entrada para este dispositivo. |
Captured |
Obtiene el elemento que capturó el objeto TouchDevice. |
CaptureMode |
Obtiene la directiva de captura de TouchDevice. |
DirectlyOver |
Obtiene el elemento sobre el que está justo encima el punto de contacto táctil. |
Dispatcher |
Obtiene el objeto Dispatcher al que está asociado DispatcherObject. (Heredado de DispatcherObject) |
Id |
Obtiene el identificador único de TouchDevice, tal como lo proporciona el sistema operativo. |
IsActive |
Obtiene un valor que indica si el dispositivo está activo. |
Target |
Obtiene el elemento que recibe la entrada desde TouchDevice. |
Métodos
Activate() |
Agrega TouchDevice al sistema de mensajería de entrada. |
Capture(IInputElement) |
Captura una entrada táctil en el elemento especificado usando el modo de captura de Element. |
Capture(IInputElement, CaptureMode) |
Captura una entrada táctil en el elemento especificado usando el CaptureMode indicado. |
CheckAccess() |
Determina si el subproceso de la llamada tiene acceso a DispatcherObject. (Heredado de DispatcherObject) |
Deactivate() |
Quita TouchDevice del sistema de mensajería de entrada. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetIntermediateTouchPoints(IInputElement) |
Cuando se invalida en una clase derivada, devuelve los puntos táctiles recopilados entre el evento Touch más reciente y el evento Touch anterior. |
GetTouchPoint(IInputElement) |
Devuelve la posición actual del dispositivo táctil con respecto al elemento especificado. |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
OnCapture(IInputElement, CaptureMode) |
Se le llama cuando se captura una entrada táctil en un elemento. |
OnManipulationEnded(Boolean) |
Se le llama cuando finaliza una manipulación. |
OnManipulationStarted() |
Se le llama cuando se inicia una manipulación. |
ReportDown() |
Notifica que se ha presionado una entrada táctil en un elemento. |
ReportMove() |
Notifica que una entrada táctil se está moviendo por un elemento. |
ReportUp() |
Notifica que una entrada táctil se levantó de un elemento. |
SetActiveSource(PresentationSource) |
Establece el objeto PresentationSource que notifica la entrada para este dispositivo. |
Synchronize() |
Fuerza a TouchDevice a sincronizar la interfaz de usuario con los puntos táctiles subyacentes. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
VerifyAccess() |
Exige que el subproceso de la llamada tenga acceso a DispatcherObject. (Heredado de DispatcherObject) |
Eventos
Activated |
Se produce cuando TouchDevice se agrega al sistema de mensajería de entrada. |
Deactivated |
Se produce cuando TouchDevice se quita del sistema de mensajería de entrada. |
Updated |
Se produce cuando se envía un mensaje táctil. |
Implementaciones de interfaz explícitas
IManipulator.GetPosition(IInputElement) |
Devuelve la posición del objeto IManipulator. |
IManipulator.Id |
Obtiene el identificador único de TouchDevice, tal como lo proporciona el sistema operativo. |
IManipulator.ManipulationEnded(Boolean) |
Se produce cuando finaliza una manipulación. |