Freigeben über


TouchDevice Klasse

Definition

Stellt eine einzelne Toucheingabe dar, die von einem Finger auf einem Touchscreen erzeugt wird.

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

Beispiele

Im folgenden Beispiel können Sie einfache Muster auf einem Canvas Touchscreen erstellen, indem Sie zwei Finger auf einen Touchscreen ziehen. Jede Berührung wird durch eine TouchDevice in der TouchEventArgs. Das Muster wird erstellt, indem eine Linie zwischen den Berührungspunkten gezeichnet wird, die von den Fingereingaben bereitgestellt werden. In diesem Beispiel ist ein Windows Touch-kompatibler Bildschirm erforderlich.

Das folgende Markup erstellt die Benutzeroberfläche, die aus einer Canvas zentriert in einem Raster besteht, und fügt die Ereignishandler für die Touchereignisse an.

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

Der folgende Code behandelt die Touchereignisse. Wenn eine Toucheingabe auf dem CanvasFinger gedrückt wird, wird die TouchDevice Aufnahme in die Canvas. Wenn die Berührung angehoben wird, wird sie TouchDevice losgelassen. Wenn sich eine Toucheingabe auf das CanvasBezieht, wird die Id Option aktiviert. Wenn die Verschiebung von der ersten Berührung stammt, wird die Position aufgezeichnet. Wenn die Bewegung von der zweiten Berührung stammt, wird eine Linie von der Position der ersten Berührung bis zur Position der zweiten Berührung gezeichnet.

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

Hinweise

In der Regel greifen Sie mithilfe der Eigenschaft auf eine TouchDevice zu TouchEventArgs.TouchDevice . A TouchDevice stellt eine einzelne Toucheingabe auf einem Bildschirm dar. Wenn mehrere Fingereingaben vorhanden sind, verwenden Sie die Id Eigenschaft, um zwischen ihnen zu unterscheiden.

Hinweis

Diese Klasse enthält eine Vererbungsnachfrage auf Klassenebene, die für alle Member gilt. Ein SecurityException Fehler wird ausgelöst, wenn die abgeleitete Klasse nicht über voll vertrauenswürdige Berechtigungen verfügt. Weitere Informationen zu Sicherheitsanforderungen finden Sie unter Verknüpfungsanforderungen und Vererbungsanforderungen.

Konstruktoren

Name Beschreibung
TouchDevice(Int32)

Wird von Konstruktoren in abgeleiteten Klassen aufgerufen, um die TouchDevice Klasse zu initialisieren.

Eigenschaften

Name Beschreibung
ActiveSource

Ruft die PresentationSource Berichtseingabe für dieses Gerät ab.

Captured

Ruft das Element ab, das die TouchDevice.

CaptureMode

Ruft die Erfassungsrichtlinie der TouchDevice.

DirectlyOver

Ruft das Element ab, über das sich der Berührungspunkt direkt befindet.

Dispatcher

Ruft dies Dispatcher ab, dem dies DispatcherObject zugeordnet ist.

(Geerbt von DispatcherObject)
Id

Ruft den eindeutigen Bezeichner des vom Betriebssystem bereitgestellten.TouchDevice

IsActive

Ruft einen Wert ab, der angibt, ob das Gerät aktiv ist.

Target

Ruft das Element ab, das Eingaben von der TouchDevice.

Methoden

Name Beschreibung
Activate()

Fügt das TouchDevice Eingabenachrichtensystem hinzu.

Capture(IInputElement, CaptureMode)

Erfasst mithilfe des angegebenen CaptureModeElements eine Toucheingabe für das angegebene Element.

Capture(IInputElement)

Erfasst mithilfe des Element Aufnahmemodus eine Toucheingabe für das angegebene Element.

CheckAccess()

Bestimmt, ob der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat.

(Geerbt von DispatcherObject)
Deactivate()

Entfernt das TouchDevice Eingabenachrichtensystem.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetIntermediateTouchPoints(IInputElement)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, werden alle Berührungspunkte zurückgegeben, die zwischen den letzten und vorherigen Touchereignissen gesammelt werden.

GetTouchPoint(IInputElement)

Gibt die aktuelle Position des Touchgeräts relativ zum angegebenen Element zurück.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnCapture(IInputElement, CaptureMode)

Wird aufgerufen, wenn eine Toucheingabe für ein Element erfasst wird.

OnManipulationEnded(Boolean)

Wird aufgerufen, wenn eine Manipulation beendet wurde.

OnManipulationStarted()

Wird aufgerufen, wenn eine Manipulation gestartet wird.

ReportDown()

Meldet, dass eine Toucheingabe auf ein Element gedrückt wird.

ReportMove()

Meldet, dass eine Toucheingabe über ein Element bewegt wird.

ReportUp()

Meldet, dass eine Berührung von einem Element aufgehoben wurde.

SetActiveSource(PresentationSource)

Legt die Meldungseingabe PresentationSource für dieses Gerät fest.

Synchronize()

Erzwingt die Synchronisierung der TouchDevice Benutzeroberfläche mit zugrunde liegenden Touchpunkten.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
VerifyAccess()

Erzwingt, dass der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat.

(Geerbt von DispatcherObject)

Ereignisse

Name Beschreibung
Activated

Tritt auf, wenn das TouchDevice Eingabenachrichtensystem hinzugefügt wird.

Deactivated

Tritt auf, wenn die Aus TouchDevice dem Eingabenachrichtensystem entfernt wird.

Updated

Tritt auf, wenn eine Touchnachricht gesendet wird.

Explizite Schnittstellenimplementierungen

Name Beschreibung
IManipulator.GetPosition(IInputElement)

Gibt die Position des IManipulator Objekts zurück.

IManipulator.Id

Ruft den eindeutigen Bezeichner des TouchDevice vom Betriebssystem bereitgestellten ab.

IManipulator.ManipulationEnded(Boolean)

Tritt auf, wenn eine Manipulation beendet wurde.

Gilt für: