TouchDevice Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en enda pekinmatning som genereras av ett finger på en pekskärm.
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
- Arv
- Implementeringar
Exempel
I följande exempel kan du skapa enkla mönster på en Canvas genom att dra två fingrar på en pekskärm. Varje touch representeras av en TouchDevice i TouchEventArgs. Mönstret skapas genom att rita en linje mellan de beröringspunkter som tillhandahålls av touch-strecken. Det här exemplet kräver en Windows Pekskärmskompatibel skärm.
Följande markering skapar användargränssnittet, som består av ett Canvas som är centrerat i ett rutnät, och kopplar händelsehanterarna för touch-händelserna.
<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>
Följande kod hanterar touchhändelserna. När en touch trycks på Canvas, TouchDevice fångas den till Canvas. När touchen lyfts frigörs den TouchDevice . När en touch flyttas på CanvasId , kontrolleras . Om flytten kom från den första touchen registreras dess plats. Om flytten kom från den andra touchen dras en linje från positionen för den första touchen till positionen för den andra touchen.
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
Kommentarer
Du får vanligtvis åtkomst till en TouchDevice med hjälp TouchEventArgs.TouchDevice av egenskapen . A TouchDevice representerar en enda touch på en skärm. Om det finns flera inslag använder du egenskapen Id för att skilja mellan dem.
Note
Den här klassen innehåller ett arvskrav på klassnivå som gäller för alla medlemmar. En SecurityException genereras när den härledda klassen inte har fullständig behörighet. Mer information om säkerhetskrav finns i Länka krav och arvskrav.
Konstruktorer
| Name | Description |
|---|---|
| TouchDevice(Int32) |
Anropas från konstruktorer i härledda klasser för att initiera TouchDevice klassen. |
Egenskaper
| Name | Description |
|---|---|
| ActiveSource |
Hämtar som PresentationSource rapporterar indata för den här enheten. |
| Captured |
Hämtar elementet som hämtade TouchDevice. |
| CaptureMode |
Hämtar avbildningsprincipen för TouchDevice. |
| DirectlyOver |
Hämtar elementet som touchkontaktpunkten är direkt över. |
| Dispatcher |
Hämtar det Dispatcher som DispatcherObject är associerat med. (Ärvd från DispatcherObject) |
| Id |
Hämtar den unika identifieraren för TouchDevice, som tillhandahålls av operativsystemet. |
| IsActive |
Hämtar ett värde som anger om enheten är aktiv. |
| Target |
Hämtar elementet som tar emot indata från TouchDevice. |
Metoder
| Name | Description |
|---|---|
| Activate() |
TouchDevice Lägger till i indatameddelandesystemet. |
| Capture(IInputElement, CaptureMode) |
Samlar in en touch till det angivna elementet med hjälp av den angivna CaptureMode. |
| Capture(IInputElement) |
Samlar in en touch till det angivna elementet med hjälp av avbildningsläget Element . |
| CheckAccess() |
Avgör om den anropande tråden har åtkomst till den här DispatcherObject. (Ärvd från DispatcherObject) |
| Deactivate() |
TouchDevice Tar bort från indatameddelandesystemet. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetIntermediateTouchPoints(IInputElement) |
När det åsidosätts i en härledd klass returnerar alla beröringspunkter som samlas in mellan de senaste och tidigare touchhändelserna. |
| GetTouchPoint(IInputElement) |
Returnerar den aktuella positionen för touch-enheten i förhållande till det angivna elementet. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| OnCapture(IInputElement, CaptureMode) |
Anropas när en touch registreras till ett element. |
| OnManipulationEnded(Boolean) |
Anropas när en manipulation har upphört. |
| OnManipulationStarted() |
Anropas när en manipulering startas. |
| ReportDown() |
Rapporterar att en touch trycks på ett element. |
| ReportMove() |
Rapporterar att en touch rör sig över ett element. |
| ReportUp() |
Rapporterar att en touch lyftes från ett element. |
| SetActiveSource(PresentationSource) |
Anger som PresentationSource rapporterar indata för den här enheten. |
| Synchronize() |
TouchDevice Tvingar användaren att synkronisera användargränssnittet med underliggande pekpunkter. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| VerifyAccess() |
Framtvingar att den anropande tråden har åtkomst till den här DispatcherObject. (Ärvd från DispatcherObject) |
Händelser
| Name | Description |
|---|---|
| Activated |
Inträffar när TouchDevice läggs till i indatameddelandesystemet. |
| Deactivated |
Inträffar när TouchDevice tas bort från indatameddelandesystemet. |
| Updated |
Inträffar när ett pekmeddelande skickas. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IManipulator.GetPosition(IInputElement) |
Returnerar objektets IManipulator position. |
| IManipulator.Id |
Hämtar den unika identifieraren för det TouchDevice som tillhandahålls av operativsystemet. |
| IManipulator.ManipulationEnded(Boolean) |
Inträffar när en manipulation har avslutats. |