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 Touchscreen erstellen, indem Sie zwei Finger auf einem Touchscreen ziehen. Jede Toucheingabe wird durch eine TouchDevice in der TouchEventArgs. Das Muster wird durch Zeichnen einer Linie zwischen den Touchpunkten erstellt, die von den Toucheingaben bereitgestellt werden. In diesem Beispiel ist ein Windows Touch-kompatibler Bildschirm erforderlich.

Im folgenden Markup wird die Benutzeroberfläche erstellt, die aus einem Canvas Raster besteht, das in einem Raster zentriert ist und die Ereignishandler für die Touchereignisse anfügt.

<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 CanvasDrücker gedrückt wird, wird die TouchDevice Aufnahme an die Canvas. Wenn die Toucheingabe aufgehoben wird, wird die TouchDevice Veröffentlichung freigegeben. Wenn sich eine Toucheingabe auf das Bezieht, wird dies CanvasId überprüft. Wenn der Wechsel von der ersten Toucheingabe stammt, wird seine Position aufgezeichnet. Wenn die Bewegung von der zweiten Toucheingabe stammt, wird eine Linie aus der Position der ersten Berührung auf die Position der zweiten Toucheingabe 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 TouchEventArgs.TouchDevice Eigenschaft auf einen TouchDevice Zugriff zu. A TouchDevice stellt eine einzelne Toucheingabe auf einem Bildschirm dar. Wenn mehrere Toucheingaben vorhanden sind, verwenden Sie die Id Eigenschaft, um zwischen ihnen zu unterscheiden.

Hinweis

Diese Klasse enthält eine Vererbungsanforderungen auf Klassenebene, die für alle Mitglieder gilt. Eine SecurityException wird ausgelöst, wenn die abgeleitete Klasse keine voll vertrauenswürdige Berechtigung hat. 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: