TouchDevice Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje pojedyncze wejście dotykowe produkowane przez palec na ekranie dotykowym.
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
- Dziedziczenie
- Implementuje
Przykłady
Poniższy przykład umożliwia tworzenie prostych wzorów na obiekcie Canvas przez przeciąganie dwóch palców na ekranie dotykowym. Każdy dotyk jest reprezentowany przez element TouchDevice w elemecie TouchEventArgs. Wzorzec jest tworzony przez rysowanie linii między punktami dotykowymi dostarczanymi przez dotyk. Ten przykład wymaga ekranu zgodnego z obsługą dotyku systemu Windows.
Poniższy znacznik tworzy interfejs użytkownika, który składa się z Canvas elementu wyśrodkowanego w siatce i dołącza procedury obsługi zdarzeń dla zdarzeń dotykowych.
<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>
Poniższy kod obsługuje zdarzenia dotykowe. Po naciśnięciu dotyku CanvasTouchDevice na obiekcie element jest przechwytywany do Canvaselementu . Po podniesieniu dotyku TouchDevice zostanie zwolniony. Po przesunięciu dotyku CanvasId na obiekcie jest zaznaczone pole wyboru . Jeśli ruch pochodzi z pierwszego dotyku, jego lokalizacja jest rejestrowana. Jeśli ruch pochodzi z drugiego dotyku, linia jest rysowana z pozycji pierwszego dotyku do pozycji drugiego dotyku.
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
Uwagi
Zazwyczaj uzyskujesz dostęp do TouchDevice obiektu przy użyciu TouchEventArgs.TouchDevice właściwości . Element reprezentuje TouchDevice pojedynczy dotyk na ekranie. Jeśli istnieje wiele dotyków, użyj Id właściwości , aby je odróżnić.
Uwaga
Ta klasa zawiera żądanie dziedziczenia na poziomie klasy, które ma zastosowanie do wszystkich elementów członkowskich. Wartość A SecurityException jest zgłaszana, gdy klasa pochodna nie ma uprawnień pełnego zaufania. Aby uzyskać więcej informacji na temat wymagań dotyczących zabezpieczeń, zobacz Łączenie żądań i żądań dziedziczenia.
Konstruktory
TouchDevice(Int32) |
Wywoływane z konstruktorów w klasach pochodnych w celu zainicjowania TouchDevice klasy. |
Właściwości
ActiveSource |
PresentationSource Pobiera dane wejściowe raportowania dla tego urządzenia. |
Captured |
Pobiera element, który przechwycił TouchDeviceelement . |
CaptureMode |
Pobiera zasady przechwytywania obiektu TouchDevice. |
DirectlyOver |
Pobiera element, do którego bezpośrednio przechodzi punkt kontaktu dotykowego. |
Dispatcher |
Dispatcher Pobiera tę DispatcherObject wartość skojarzona z. (Odziedziczone po DispatcherObject) |
Id |
Pobiera unikatowy identyfikator elementu TouchDevice, jak podano w systemie operacyjnym. |
IsActive |
Pobiera wartość wskazującą, czy urządzenie jest aktywne. |
Target |
Pobiera element, który odbiera dane wejściowe z elementu TouchDevice. |
Metody
Activate() |
Dodaje element TouchDevice do systemu przesyłania komunikatów wejściowych. |
Capture(IInputElement) |
Przechwytuje dotyk do określonego elementu przy użyciu trybu przechwytywania Element . |
Capture(IInputElement, CaptureMode) |
Przechwytuje dotyk do określonego elementu przy użyciu określonego CaptureModeelementu . |
CheckAccess() |
Określa, czy wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
Deactivate() |
Usuwa element TouchDevice z systemu przesyłania komunikatów wejściowych. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetIntermediateTouchPoints(IInputElement) |
Po zastąpieniu w klasie pochodnej zwraca wszystkie punkty dotykowe, które są zbierane między najnowszymi i poprzednimi zdarzeniami dotyku. |
GetTouchPoint(IInputElement) |
Zwraca bieżącą pozycję urządzenia dotykowego względem określonego elementu. |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnCapture(IInputElement, CaptureMode) |
Wywoływane, gdy dotyk jest przechwytywany do elementu. |
OnManipulationEnded(Boolean) |
Wywoływane po zakończeniu manipulacji. |
OnManipulationStarted() |
Wywoływane po rozpoczęciu manipulowania. |
ReportDown() |
Raporty, że dotyk jest naciskany na element. |
ReportMove() |
Raporty, że dotyk przechodzi przez element. |
ReportUp() |
Raporty, że dotyk został zniesiony z elementu. |
SetActiveSource(PresentationSource) |
PresentationSource Ustawia dane wejściowe raportowania dla tego urządzenia. |
Synchronize() |
TouchDevice Wymusza synchronizowanie interfejsu użytkownika z podstawowymi punktami dotykowymi. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
VerifyAccess() |
Wymusza, że wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
Zdarzenia
Activated |
Występuje, gdy element TouchDevice jest dodawany do systemu przesyłania komunikatów wejściowych. |
Deactivated |
Występuje po usunięciu TouchDevice elementu z systemu przesyłania komunikatów wejściowych. |
Updated |
Występuje po wysłaniu wiadomości dotykowej. |
Jawne implementacje interfejsu
IManipulator.GetPosition(IInputElement) |
Zwraca położenie IManipulator obiektu. |
IManipulator.Id |
Pobiera unikatowy identyfikator elementu TouchDevice podanego przez system operacyjny. |
IManipulator.ManipulationEnded(Boolean) |
Występuje po zakończeniu manipulowania. |