Freigeben über


TouchDevice Klasse

Definition

Stellt eine einzelne Fingereingabe auf einem Touchscreen dar.

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 erstellen, indem Sie zwei Finger auf einen Touchscreen ziehen. Jede Berührung wird durch eine TouchDevice in der TouchEventArgsdargestellt. Das Muster wird erstellt, indem eine Linie zwischen den Berührungspunkten gezeichnet wird, die durch die Toucheingaben bereitgestellt werden. Für dieses Beispiel ist ein Windows Touch-kompatibler Bildschirm erforderlich.

Das folgende Markup erstellt die Benutzeroberfläche, die aus einer Canvas besteht, die in einem Raster zentriert ist, 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 den Canvasgedrückt wird, wird der TouchDevice in Canvaserfasst. Wenn die Berührung aufgehoben wird, wird die TouchDevice losgelassen. Wenn eine Toucheingabe auf dem Canvasbewegt wird, wird die Id aktiviert. Wenn die Verschiebung von der ersten Berührung stammt, wird ihre 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

Sie greifen in der Regel mithilfe der TouchEventArgs.TouchDevice -Eigenschaft auf eine TouchDevice zu. Ein TouchDevice stellt eine einzelne Toucheingabe auf einem Bildschirm dar. Wenn mehrere Berührungen vorhanden sind, verwenden Sie die Id -Eigenschaft, um zwischen ihnen zu unterscheiden.

Hinweis

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

Konstruktoren

TouchDevice(Int32)

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

Eigenschaften

ActiveSource

Ruft die PresentationSource ab, die Eingaben für dieses Gerät meldet.

Captured

Ruft das Element ab, das das TouchDevice-Objekt erfasst hat.

CaptureMode

Ruft die Erfassungsrichtlinie für TouchDevice ab.

DirectlyOver

Ruft das Element ab, das sich direkt unter dem Fingereingabekontaktpunkt befindet.

Dispatcher

Ruft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist.

(Geerbt von DispatcherObject)
Id

Ruft den eindeutigen Bezeichner des TouchDevice ab, der vom Betriebssystem bereitgestellt wird.

IsActive

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

Target

Ruft das Element ab, das die Eingaben vom TouchDevice-Objekt empfängt.

Methoden

Activate()

Fügt das TouchDevice-Objekt dem Eingabemessagingsystem hinzu.

Capture(IInputElement)

Erfasst eine Fingereingabe für das angegebene Element mit dem Element-Erfassungsmodus.

Capture(IInputElement, CaptureMode)

Erfasst Fingereingaben für das angegebene Element mit dem angegebenen CaptureMode.

CheckAccess()

Bestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)
Deactivate()

Entfernt den TouchDevice aus dem Eingabemessagingsystem.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetIntermediateTouchPoints(IInputElement)

Gibt beim Überschreiben in einer abgeleiteten Klasse alle zwischen den letzten und vorherigen Berührungsereignissen gesammelten Berührungspunkte zurück.

GetTouchPoint(IInputElement)

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

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnCapture(IInputElement, CaptureMode)

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

OnManipulationEnded(Boolean)

Wird aufgerufen, wenn eine Änderung beendet wurde.

OnManipulationStarted()

Wird aufgerufen, wenn eine Bearbeitung gestartet wird.

ReportDown()

Berichtet, dass eine Fingereingabe in einem Element erfolgt ist.

ReportMove()

Berichtet, dass eine Fingereingabe über einem Element erfolgt.

ReportUp()

Berichtet, dass eine Fingereingabe von einem Element transformiert wurde.

SetActiveSource(PresentationSource)

Legt das PresentationSource-Objekt fest, das Eingaben für dieses Gerät meldet.

Synchronize()

Zwingt das TouchDevice, die Benutzeroberfläche mit zugrunde liegenden Berührungspunkten zu synchronisieren.

ToString()

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

(Geerbt von Object)
VerifyAccess()

Erzwingt, dass der aufrufende Thread auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)

Ereignisse

Activated

Tritt auf, wenn das TouchDevice dem Eingabemessagingsystem hinzugefügt wird.

Deactivated

Tritt ein, wenn das TouchDevice aus dem Eingabemessagingsystem entfernt wird.

Updated

Tritt auf, wenn eine Fingereingabenachricht gesendet wird.

Explizite Schnittstellenimplementierungen

IManipulator.GetPosition(IInputElement)

Gibt die Position des IManipulator-Objekts zurück.

IManipulator.Id

Ruft den eindeutigen Bezeichner des TouchDevice ab, der vom Betriebssystem bereitgestellt wird.

IManipulator.ManipulationEnded(Boolean)

Tritt ein, wenn eine Änderung beendet wurde.

Gilt für: