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