TouchDevice Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет один сенсорный ввод, выполненный с помощью пальца на сенсорном экране.
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
- Наследование
- Реализации
Примеры
Следующий пример позволяет создать простые узоры в , Canvas перетаскивая два пальца на сенсорном экране. Каждое касание представлено TouchDevice в TouchEventArgs. Шаблон создается путем рисования линии между точками касания, предоставляемыми касаниями. Для этого примера требуется экран, совместимый с Сенсорным экраном Windows.
Следующая разметка создает пользовательский интерфейс, состоящий из элемента , Canvas расположенного по центру в сетке, и присоединяет обработчики событий для событий касания.
<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>
Следующий код обрабатывает события касания. При нажатии касания на Canvasобъект TouchDevice захватывается Canvasв . При снятии TouchDevice касания объект освобождается. При перемещении касания на Canvasобъекте Id проверяется . Если перемещение произошло при первом касании, его расположение записывается. Если перемещение произошло от второго касания, линия рисуется от позиции первого касания до позиции второго касания.
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
Комментарии
Обычно доступ к объекту выполняется TouchDevice с помощью TouchEventArgs.TouchDevice свойства . Представляет TouchDevice одно касание на экране. Если имеется несколько касаний, используйте свойство , Id чтобы различать их.
Примечание
Этот класс содержит требование наследования на уровне класса, которое применяется ко всем членам. Возникает SecurityException , если производный класс не имеет разрешения с полным доверием. Дополнительные сведения о требованиях к безопасности см. в разделе Требования ссылок и Требования наследования.
Конструкторы
TouchDevice(Int32) |
Вызывается из конструкторов в производных классах для инициализации класса TouchDevice. |
Свойства
ActiveSource |
Получает PresentationSource, сообщающий сведения о вводе для этого устройства. |
Captured |
Получает элемент, захвативший TouchDevice. |
CaptureMode |
Получает политику захвата TouchDevice. |
DirectlyOver |
Получает элемент, находящийся непосредственно под точкой сенсорного контакта. |
Dispatcher |
Возвращает объект Dispatcher, с которым связан этот объект DispatcherObject. (Унаследовано от DispatcherObject) |
Id |
Получает уникальный идентификатор объекта TouchDevice в том виде, в котором он предоставляется операционной системой. |
IsActive |
Получает значение, указывающее, активно ли устройство. |
Target |
Получает элемент, получающий ввод с TouchDevice. |
Методы
Activate() |
Добавляет TouchDevice в систему входных сообщений. |
Capture(IInputElement) |
Захватывает касание заданного элемента с использованием режима захвата Element. |
Capture(IInputElement, CaptureMode) |
Захватывает касание заданного элемента с использованием заданного CaptureMode. |
CheckAccess() |
Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject. (Унаследовано от DispatcherObject) |
Deactivate() |
Удаляет устройство TouchDevice из системы входных сообщений. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetIntermediateTouchPoints(IInputElement) |
При переопределении в производном классе возвращает все сенсорные точки, собранные между самым последним и предыдущим сенсорным событием. |
GetTouchPoint(IInputElement) |
Возвращает текущую позицию сенсорного устройства относительно заданного элемента. |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
OnCapture(IInputElement, CaptureMode) |
Вызывается при захвате касания элементом. |
OnManipulationEnded(Boolean) |
Вызывается по завершении манипуляции. |
OnManipulationStarted() |
Вызывается в начале манипуляции. |
ReportDown() |
Сообщает о сенсорном нажатии на элемент. |
ReportMove() |
Сообщает о сенсорном перемещении по элементу. |
ReportUp() |
Сообщает об удалении сенсорного ввода из элемента. |
SetActiveSource(PresentationSource) |
Задает PresentationSource, сообщающий о вводе для этого устройства. |
Synchronize() |
Обеспечивает принудительную синхронизацию пользовательского интерфейса с базовыми сенсорными точками с использованием TouchDevice. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
VerifyAccess() |
Обеспечивает наличие у вызывающего потока доступ к этому DispatcherObject. (Унаследовано от DispatcherObject) |
События
Activated |
Происходит, если TouchDevice добавляется в систему обмена сообщениями на входе. |
Deactivated |
Происходит при удалении объекта TouchDevice из системы входных сообщений. |
Updated |
Происходит при отправлении сенсорного сообщения. |
Явные реализации интерфейса
IManipulator.GetPosition(IInputElement) |
Возвращает позицию объекта IManipulator. |
IManipulator.Id |
Получает уникальный идентификатор объекта TouchDevice в том виде, в котором он предоставляется операционной системой. |
IManipulator.ManipulationEnded(Boolean) |
Происходит при завершении манипуляции. |