TouchDevice Classe

Definizione

Rappresenta un singolo input tocco prodotto da un dito su un touchscreen.Represents a single touch input produced by a finger on a touchscreen.

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
Ereditarietà
Implementazioni

Esempi

L'esempio seguente consente di creare modelli semplici su un Canvas trascinando due dita su un touchscreen.The following example enables you to create simple patterns on a Canvas by dragging two fingers on a touchscreen. Ogni tocco è rappresentato da un TouchDevice oggetto TouchEventArgsin.Each touch is represented by a TouchDevice in the TouchEventArgs. Il modello viene creato disegnando una linea tra i punti di tocco forniti dai tocchi.The pattern is created by drawing a line between the touch points that are provided by the touches. Questo esempio richiede una schermata compatibile con Windows Touch.This example requires a Windows Touch-compatible screen.

Il markup seguente crea l'interfaccia utente, che è costituita Canvas da un oggetto centrato in una griglia e connette i gestori eventi per gli eventi di tocco.The following markup creates the user interface, which consists of a Canvas that is centered in a grid, and attaches the event handlers for the touch events.

<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>

Il codice seguente gestisce gli eventi di tocco.The following code handles the touch events. Quando si preme un tocco su Canvas, l'oggetto TouchDevice viene acquisito nell'oggetto. CanvasWhen a touch is pressed on the Canvas, the TouchDevice is captured to the Canvas. Quando il tocco viene sollevato, TouchDevice viene rilasciato.When the touch is lifted, the TouchDevice is released. Quando un tocco si sposta su Canvas Id , viene selezionato.When a touch moves on the Canvas, the Id is checked. Se lo spostamento deriva dal primo tocco, la relativa posizione viene registrata.If the move came from the first touch, its location is recorded. Se lo spostamento deriva dal secondo tocco, viene disegnata una linea dalla posizione del primo tocco alla posizione del secondo tocco.If the move came from the second touch, a line is drawn from the position of the first touch to the position of the second touch.

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

Commenti

In genere si accede TouchDevice a utilizzando la TouchEventArgs.TouchDevice proprietà.You typically access a TouchDevice by using the TouchEventArgs.TouchDevice property. Un TouchDevice oggetto rappresenta un singolo tocco su una schermata.A TouchDevice represents a single touch on a screen. Se sono presenti più ritocchi, utilizzare Id la proprietà per distinguerli.If multiple touches are present, use the Id property to distinguish between them.

Nota

Questa classe contiene una richiesta di ereditarietà a livello di classe che si applica a tutti i membri.This class contains an inheritance demand at the class level that applies to all members. Viene SecurityException generata un'eccezione quando la classe derivata non dispone dell'autorizzazione di attendibilità totale.A SecurityException is thrown when the derived class does not have full-trust permission. Per altre informazioni sulle richieste di sicurezza, vedere richieste di collegamento e richieste di ereditarietà.For more information about security demands, see Link Demands and Inheritance Demands.

Costruttori

TouchDevice(Int32)

Viene chiamato dai costruttori nelle classi derivate per inizializzare la classe TouchDevice.Called from constructors in derived classes to initialize the TouchDevice class.

Proprietà

ActiveSource

Ottiene l'oggetto PresentationSource che segnala l'input per questo dispositivo.Gets the PresentationSource that is reporting input for this device.

Captured

Ottiene l'elemento che ha acquisito l'oggetto TouchDevice.Gets the element that captured the TouchDevice.

CaptureMode

Ottiene i criteri di acquisizione dell'oggetto TouchDevice.Gets the capture policy of the TouchDevice.

DirectlyOver

Ottiene l'elemento che si trova direttamente sopra il punto di contatto di tocco.Gets the element that the touch contact point is directly over.

Dispatcher

Ottiene l'oggetto Dispatcher associato a DispatcherObject.Gets the Dispatcher this DispatcherObject is associated with.

(Ereditato da DispatcherObject)
Id

Ottiene l'identificatore univoco di TouchDevice, come fornito dal sistema operativo.Gets the unique identifier of the TouchDevice, as provided by the operating system.

IsActive

Ottiene un valore che indica se il dispositivo è attivo.Gets a value that indicates whether the device is active.

Target

Ottiene l'elemento che riceve l'input dall'oggetto TouchDevice.Gets the element that receives input from the TouchDevice.

Metodi

Activate()

Aggiunge l'oggetto TouchDevice al sistema di messaggistica di input.Adds the TouchDevice to the input messaging system.

Capture(IInputElement)

Acquisisce un tocco nell'elemento specificato tramite la modalità di acquisizione Element.Captures a touch to the specified element by using the Element capture mode.

Capture(IInputElement, CaptureMode)

Acquisisce un tocco nell'elemento specificato utilizzando l'oggetto CaptureMode specificato.Captures a touch to the specified element by using the specified CaptureMode.

CheckAccess()

Determina se il thread chiamante ha accesso a DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Ereditato da DispatcherObject)
Deactivate()

Rimuove l'oggetto TouchDevice dal sistema di messaggistica di input.Removes the TouchDevice from the input messaging system.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetIntermediateTouchPoints(IInputElement)

Se sottoposto a override in una classe derivata, restituisce tutti i punti di tocco raccolti tra l'evento di tocco più recente e quello precedente.When overridden in a derived class, returns all touch points that are collected between the most recent and previous touch events.

GetTouchPoint(IInputElement)

Restituisce la posizione corrente del dispositivo a tocco relativa all'elemento specificato.Returns the current position of the touch device relative to the specified element.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
OnCapture(IInputElement, CaptureMode)

Chiamato quanto un tocco è acquisito in un elemento.Called when a touch is captured to an element.

OnManipulationEnded(Boolean)

Chiamato al termine di una manipolazione.Called when a manipulation has ended.

OnManipulationStarted()

Chiamato all'avvio di una manipolazione.Called when a manipulation is started.

ReportDown()

Segnala che un tocco viene premuto in un elemento.Reports that a touch is pressed on an element.

ReportMove()

Segnala che un tocco viene spostato in un elemento.Reports that a touch is moving across an element.

ReportUp()

Restituisce che un tocco è stato sollevato da un elemento.Reports that a touch was lifted from an element.

SetActiveSource(PresentationSource)

Imposta l'oggetto PresentationSource che segnala l'input per questo dispositivo.Sets the PresentationSource that is reporting input for this device.

Synchronize()

Forza TouchDevice a sincronizzare l'interfaccia utente con i punti di tocco sottostanti.Forces the TouchDevice to synchronize the user interface with underlying touch points.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)
VerifyAccess()

Impone che il thread chiamante abbia accesso a DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Ereditato da DispatcherObject)

Eventi

Activated

Si verifica quando TouchDevice viene aggiunto al sistema di messaggistica di input.Occurs when the TouchDevice is added to the input messaging system.

Deactivated

Si verifica quando l'oggetto TouchDevice viene rimosso dal sistema di messaggistica di input.Occurs when the TouchDevice is removed from the input messaging system.

Updated

Si verifica quando viene inviato un messaggio di tocco.Occurs when a touch message is sent.

Implementazioni dell'interfaccia esplicita

IManipulator.GetPosition(IInputElement)

Restituisce la posizione dell'oggetto IManipulator.Returns the position of the IManipulator object.

IManipulator.Id

Ottiene l'identificatore univoco di TouchDevice, come fornito dal sistema operativo.Gets the unique identifier of the TouchDevice as provided by the operating system.

IManipulator.ManipulationEnded(Boolean)

Si verifica al termine di una manipolazione.Occurs when a manipulation has ended.

Sicurezza

UIPermission
per la derivazione da questa classe.for deriving from this class. Azione di sicurezza InheritanceDemand:.Security action: InheritanceDemand. Enumerazione associata:UnrestrictedAssociated enumeration: Unrestricted

Si applica a