TouchDevice Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje jeden dotykový vstup vytvořený prstem na dotykovém displeji.
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
- Dědičnost
- Implementuje
Příklady
Následující příklad umožňuje vytvořit jednoduché vzory na Canvas dotykovém displeji přetažením dvou prstů. Každý dotyk je reprezentován TouchDevice v TouchEventArgs. Vzorek se vytvoří nakreslením čáry mezi dotykovými body, které jsou poskytovány dotyky. Tento příklad vyžaduje obrazovku kompatibilní s dotykovým ovládáním Windows.
Následující kód vytvoří uživatelské rozhraní, které se skládá z objektu Canvas , které je vycentrováno v mřížce, a připojí obslužné rutiny událostí pro události dotykového ovládání.
<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>
Následující kód zpracovává události dotykového ovládání. Při stisknutí dotyku Canvasna , TouchDevice je zachycena na Canvas. Po zvednutí TouchDevice dotykového ovládání se uvolní. Když se dotykové ovládání přesune na Canvas, je zaškrtnuté Id políčko . Pokud přesunutí přišlo od prvního dotyku, jeho umístění se zaznamená. Pokud došlo k přesunutí z druhého dotyku, je čára nakreslena z pozice prvního dotyku do pozice druhého 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
Poznámky
K objektu TouchDevice se obvykle přistupuje pomocí TouchEventArgs.TouchDevice vlastnosti . A TouchDevice představuje jeden dotyk na obrazovce. Pokud je k dispozici více dotyků, použijte Id vlastnost k jejich rozlišení.
Poznámka
Tato třída obsahuje požadavek dědičnosti na úrovni třídy, který se vztahuje na všechny členy. Vyvolá SecurityException se, když odvozená třída nemá oprávnění úplné důvěryhodnosti. Další informace o požadavcích na zabezpečení najdete v tématu Požadavky propojení a požadavky na dědičnost.
Konstruktory
TouchDevice(Int32) |
Volá se z konstruktorů v odvozených třídách k inicializaci TouchDevice třídy. |
Vlastnosti
ActiveSource |
PresentationSource Získá , který je hlášení vstup pro toto zařízení. |
Captured |
Získá element, který zachytil .TouchDevice |
CaptureMode |
Získá zásadu zachytávání pro TouchDevice. |
DirectlyOver |
Získá prvek, který dotykový kontaktní bod je přímo nad. |
Dispatcher |
Získá přidruženou Dispatcher k tomuto DispatcherObject . (Zděděno od DispatcherObject) |
Id |
Získá jedinečný identifikátor TouchDevice, který poskytuje operační systém. |
IsActive |
Získá hodnotu, která označuje, zda je zařízení aktivní. |
Target |
Získá element, který přijímá vstup z TouchDevice. |
Metody
Activate() |
Přidá do TouchDevice vstupního systému zasílání zpráv. |
Capture(IInputElement) |
Zachytí dotyk zadaného prvku pomocí Element režimu zachycení. |
Capture(IInputElement, CaptureMode) |
Zachytí dotyk zadaného prvku pomocí zadaného CaptureModeprvku . |
CheckAccess() |
Určuje, zda má volající vlákno přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |
Deactivate() |
Odebere ze TouchDevice vstupního systému zasílání zpráv. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetIntermediateTouchPoints(IInputElement) |
Při přepsání v odvozené třídě vrátí všechny dotykové body, které jsou shromážděny mezi nejnovějšími a předchozími dotykovými událostmi. |
GetTouchPoint(IInputElement) |
Vrátí aktuální pozici dotykového zařízení vzhledem k zadanému prvku. |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
OnCapture(IInputElement, CaptureMode) |
Volá se při zachycení dotyku prvku. |
OnManipulationEnded(Boolean) |
Volá se, když skončila manipulace. |
OnManipulationStarted() |
Volá se při zahájení manipulace. |
ReportDown() |
Hlásí, že je na prvek stisknut dotyk. |
ReportMove() |
Hlásí, že se dotykové ovládání pohybuje přes prvek. |
ReportUp() |
Hlásí, že se z prvku zvedl dotyk. |
SetActiveSource(PresentationSource) |
PresentationSource Nastaví pro toto zařízení vstup pro generování sestav. |
Synchronize() |
Vynutí TouchDevice synchronizaci uživatelského rozhraní se základními dotykovými body. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
VerifyAccess() |
Vynutí, aby volající vlákno má přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |
Událost
Activated |
Nastane při TouchDevice přidání do vstupního systému zasílání zpráv. |
Deactivated |
Nastane při TouchDevice odebrání ze vstupního systému zasílání zpráv. |
Updated |
Nastane při odeslání dotykové zprávy. |
Explicitní implementace rozhraní
IManipulator.GetPosition(IInputElement) |
Vrátí pozici objektu IManipulator . |
IManipulator.Id |
Získá jedinečný identifikátor TouchDevice , který poskytuje operační systém. |
IManipulator.ManipulationEnded(Boolean) |
Nastane po ukončení manipulace. |