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żde dotknięcie jest reprezentowane przez element TouchDevice w obiekcie TouchEventArgs. Wzorzec jest tworzony przez rysowanie linii między punktami dotykowymi dostarczanymi przez dotyk. Ten przykład wymaga ekranu zgodnego z funkcją Windows Touch.
Poniższy znacznik tworzy interfejs użytkownika, który składa się z obiektu Canvas , który jest wyśrodkowany 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 Canvasna obiekcie TouchDevice element jest przechwytywany do elementu Canvas. Po podniesieniu dotyku TouchDevice zostaje zwolniony. Gdy dotknięcie przechodzi w Canvasobiekcie , Id jest zaznaczone. Jeśli przeniesienie 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 . Obiekt TouchDevice reprezentuje pojedynczy dotyk na ekranie. Jeśli istnieje wiele akcentó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 składowych. Element SecurityException jest zgłaszany, gdy klasa pochodna nie ma uprawnienia pełnego zaufania. Aby uzyskać więcej informacji na temat wymagań dotyczących zabezpieczeń, zobacz Link Demands and Inheritance Demands (Żądania łączenia i dziedziczenia).
Konstruktory
TouchDevice(Int32) |
Wywoływane z konstruktorów w klasach pochodnych w celu zainicjowania TouchDevice klasy. |
Właściwości
ActiveSource |
Pobiera dane wejściowe raportowania PresentationSource dla tego urządzenia. |
Captured |
Pobiera element, który przechwycił TouchDeviceelement . |
CaptureMode |
Pobiera zasady przechwytywania obiektu TouchDevice. |
DirectlyOver |
Pobiera element, nad którym znajduje się punkt kontaktu dotykowego. |
Dispatcher |
Pobiera element, z Dispatcher który DispatcherObject jest skojarzony. (Odziedziczone po DispatcherObject) |
Id |
Pobiera unikatowy identyfikator TouchDeviceelementu , podany przez system operacyjny. |
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 przesłonięciu w klasie pochodnej zwraca wszystkie punkty dotykowe, które są zbierane między najnowszymi i poprzednimi zdarzeniami dotykowymi. |
GetTouchPoint(IInputElement) |
Zwraca bieżącą pozycję urządzenia dotykowego względem określonego elementu. |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnCapture(IInputElement, CaptureMode) |
Wywoływana, gdy dotknięcie jest przechwytywane do elementu. |
OnManipulationEnded(Boolean) |
Wywoływane po zakończeniu manipulacji. |
OnManipulationStarted() |
Wywoływana po rozpoczęciu manipulowania. |
ReportDown() |
Raporty, że dotyk jest naciskany na element. |
ReportMove() |
Zgłasza, że dotyk przechodzi przez element. |
ReportUp() |
Raporty, że dotyk został zniesiony z elementu. |
SetActiveSource(PresentationSource) |
Ustawia dane wejściowe raportowania PresentationSource dla tego urządzenia. |
Synchronize() |
Wymusza synchronizację TouchDevice 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 po dodaniu elementu TouchDevice do systemu przesyłania komunikatów wejściowych. |
Deactivated |
Występuje, gdy element TouchDevice jest usuwany 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 TouchDevice elementu podanego przez system operacyjny. |
IManipulator.ManipulationEnded(Boolean) |
Występuje po zakończeniu manipulacji. |
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla