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 sola entrada táctil producida 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 toque se representa mediante en TouchDevice .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 una entrada táctil se mueve en Canvas, Id se comprueba . 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 un objeto representa un solo toque en una pantalla. Si hay varios toques presentes, use la Id propiedad para distinguirlas.
Nota:
Esta clase contiene una demanda de herencia en el nivel de clase que se aplica a todos los miembros. SecurityException Se 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, vea Vincular demandas y demandas de herencia.
Constructores
| Nombre | Description |
|---|---|
| TouchDevice(Int32) |
Se llama desde constructores de clases derivadas para inicializar la TouchDevice clase . |
Propiedades
| Nombre | Description |
|---|---|
| ActiveSource |
Obtiene el PresentationSource objeto que notifica la entrada de este dispositivo. |
| Captured |
Obtiene el elemento que capturó el TouchDeviceobjeto . |
| CaptureMode |
Obtiene la directiva de captura de TouchDevice. |
| DirectlyOver |
Obtiene el elemento sobre el que está directamente el punto de contacto táctil. |
| Dispatcher |
Obtiene el objeto al que DispatcherDispatcherObject está asociado. (Heredado de DispatcherObject) |
| Id |
Obtiene el identificador único de , TouchDevicetal 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 de .TouchDevice |
Métodos
| Nombre | Description |
|---|---|
| Activate() |
Agrega al TouchDevice sistema de mensajería de entrada. |
| Capture(IInputElement, CaptureMode) |
Captura una entrada táctil al elemento especificado mediante el especificado CaptureMode. |
| Capture(IInputElement) |
Captura una entrada táctil al elemento especificado mediante el Element modo de captura. |
| CheckAccess() |
Determina si el subproceso que llama tiene acceso a este DispatcherObject. (Heredado de DispatcherObject) |
| Deactivate() |
Quita del TouchDevice sistema de mensajería de entrada. |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetIntermediateTouchPoints(IInputElement) |
Cuando se reemplaza en una clase derivada, devuelve todos los puntos táctiles que se recopilan entre los eventos táctiles más recientes y anteriores. |
| 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 Objectactual. (Heredado de Object) |
| OnCapture(IInputElement, CaptureMode) |
Se llama cuando se captura una entrada táctil en un elemento. |
| OnManipulationEnded(Boolean) |
Se llama cuando finaliza una manipulación. |
| OnManipulationStarted() |
Se llama cuando se inicia una manipulación. |
| ReportDown() |
Informa de que se presiona un toque en un elemento. |
| ReportMove() |
Informa de que un toque se mueve a través de un elemento. |
| ReportUp() |
Informa de que se levantó un toque de un elemento. |
| SetActiveSource(PresentationSource) |
Establece el PresentationSource objeto que notifica la entrada de este dispositivo. |
| Synchronize() |
TouchDevice Obliga a sincronizar la interfaz de usuario con puntos táctiles subyacentes. |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
| VerifyAccess() |
Exige que el subproceso de llamada tenga acceso a este DispatcherObject. (Heredado de DispatcherObject) |
Eventos
| Nombre | Description |
|---|---|
| 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
| Nombre | Description |
|---|---|
| IManipulator.GetPosition(IInputElement) |
Devuelve la posición del IManipulator objeto . |
| IManipulator.Id |
Obtiene el identificador único de según TouchDevice lo proporcionado por el sistema operativo. |
| IManipulator.ManipulationEnded(Boolean) |
Se produce cuando finaliza una manipulación. |