Partager via


TouchDevice Classe

Définition

Représente une entrée tactile unique produite par un doigt sur un écran tactile.

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
Héritage
Implémente

Exemples

L’exemple suivant vous permet de créer des modèles simples sur un Canvas en faisant glisser deux doigts sur un écran tactile. Chaque touche est représentée par un TouchDevice dans le TouchEventArgs. Le modèle est créé en dessinant une ligne entre les points tactiles fournis par les touches. Cet exemple nécessite un écran compatible avec Windows Touch.

Le balisage suivant crée l’interface utilisateur, qui se compose d’un Canvas qui est centré dans une grille et attache les gestionnaires d’événements pour les événements tactiles.

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

Le code suivant gère les événements tactiles. Lorsqu’une pression tactile est enfoncée sur , Canvasle TouchDevice est capturé dans .Canvas Lorsque la pression tactile est levée, le TouchDevice est relâché. Lorsqu’une pression tactile se déplace sur , Canvasest Id coché. Si le déplacement provient de la première touche, son emplacement est enregistré. Si le mouvement provient de la deuxième touche, une ligne est dessinée de la position de la première touche à la position de la deuxième touche.

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

Remarques

Vous accédez généralement à un TouchDevice à l’aide de la TouchEventArgs.TouchDevice propriété . Un TouchDevice représente une seule pression tactile sur un écran. Si plusieurs touches sont présentes, utilisez la Id propriété pour les distinguer.

Notes

Cette classe contient une demande d’héritage au niveau de la classe qui s’applique à tous les membres. Un SecurityException est levée lorsque la classe dérivée n’a pas d’autorisation de confiance totale. Pour plus d’informations sur les demandes de sécurité, consultez Demandes de lien et demandes d’héritage.

Constructeurs

TouchDevice(Int32)

Appelée à partir des constructeurs des classes dérivées pour initialiser la classe TouchDevice.

Propriétés

ActiveSource

Obtient la PresentationSource qui signale l'entrée pour ce périphérique.

Captured

Obtient l'élément qui a capturé le TouchDevice.

CaptureMode

Obtient la stratégie de capture de TouchDevice.

DirectlyOver

Obtient l'élément sur lequel est directement situé le point de contact tactile.

Dispatcher

Obtient le Dispatcher associé à DispatcherObject.

(Hérité de DispatcherObject)
Id

Obtient l'identificateur unique du TouchDevice, tel qu'il est fourni par le système d'exploitation.

IsActive

Obtient une valeur qui indique si le périphérique est actif.

Target

Obtient l'élément qui reçoit l'entrée de TouchDevice.

Méthodes

Activate()

Ajoute le TouchDevice au système de messagerie d'entrée.

Capture(IInputElement)

Capture une pression tactile pour l'élément spécifié à l'aide du mode de capture Element.

Capture(IInputElement, CaptureMode)

Capture une pression tactile pour l'élément spécifié à l'aide du CaptureMode défini.

CheckAccess()

Détermine si le thread appelant a accès à ce DispatcherObject.

(Hérité de DispatcherObject)
Deactivate()

Supprime le TouchDevice du système de messagerie d'entrée.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetIntermediateTouchPoints(IInputElement)

En cas de substitution dans une classe dérivée, retourne tous les points tactiles collectés entre les événements tactiles les plus récents et précédents.

GetTouchPoint(IInputElement)

Retourne la position actuelle du périphérique tactile relatif à l'élément spécifié.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnCapture(IInputElement, CaptureMode)

Appelée lorsqu'une pression tactile est capturée pour un élément.

OnManipulationEnded(Boolean)

Appelée lorsqu'une manipulation est terminée.

OnManipulationStarted()

Appelée lorsqu'une manipulation est démarrée.

ReportDown()

Signale qu'une pression tactile a été exercée sur un élément.

ReportMove()

Signale qu'une pression tactile a parcouru un élément.

ReportUp()

Signale qu'une pression tactile n'est plus exercée sur un élément.

SetActiveSource(PresentationSource)

Définit PresentationSource qui signale l'entrée pour ce périphérique.

Synchronize()

Force le TouchDevice à synchroniser l'interface utilisateur avec les points tactiles sous-jacents.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
VerifyAccess()

Garantit que le thread appelant a accès à DispatcherObject.

(Hérité de DispatcherObject)

Événements

Activated

Se produit lorsque TouchDevice est ajouté au système de messagerie d’entrée.

Deactivated

Se produit lorsque le TouchDevice est supprimé du système de messagerie d'entrée.

Updated

Se produit lorsqu'un message tactile est envoyé.

Implémentations d’interfaces explicites

IManipulator.GetPosition(IInputElement)

Retourne la position de l'objet IManipulator.

IManipulator.Id

Obtient l'identificateur unique du TouchDevice, tel qu'il est fourni par le système d'exploitation.

IManipulator.ManipulationEnded(Boolean)

Se produit lorsqu'une manipulation est terminée.

S’applique à