TouchDevice Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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. |