TouchDevice TouchDevice TouchDevice TouchDevice Class

Определение

Представляет один сенсорный ввод, выполненный с помощью пальца на сенсорном экране.Represents a single touch input produced by a finger on a touchscreen.

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 , перетащив два пальца на сенсорном экране.The following example enables you to create simple patterns on a Canvas by dragging two fingers on a touchscreen. Представленный каждой сенсорной TouchDevice в TouchEventArgs.Each touch is represented by a TouchDevice in the TouchEventArgs. Шаблон создается путем рисования линии между точки касания, предоставляемые штрихи.The pattern is created by drawing a line between the touch points that are provided by the touches. В этом примере требуется экран совместимые с Windows Touch.This example requires a Windows Touch-compatible screen.

Следующая разметка создает пользовательский интерфейс, который состоит из Canvas центрируется в сетке и присоединяет обработчики событий для события касания.The following markup creates the user interface, which consists of a Canvas that is centered in a grid, and attaches the event handlers for the touch events.

<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>

Следующий код обрабатывает события касания.The following code handles the touch events. При сенсорном нажатии Canvas, TouchDevice захвачена Canvas.When a touch is pressed on the Canvas, the TouchDevice is captured to the Canvas. Когда удаляется сенсорное устройство, TouchDevice освобождается.When the touch is lifted, the TouchDevice is released. При перемещении касания Canvas, Id проверяется.When a touch moves on the Canvas, the Id is checked. Если перемещение пришло из первого касания, его расположение записывается.If the move came from the first touch, its location is recorded. Если перемещение пришло из второго касания, проводится линия от позиции первого касания в позицию второго касания.If the move came from the second touch, a line is drawn from the position of the first touch to the position of the second touch.

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 свойство.You typically access a TouchDevice by using the TouchEventArgs.TouchDevice property. Объект TouchDevice представляет одного касания на экране.A TouchDevice represents a single touch on a screen. При наличии нескольких касаний использовать Id свойство их различать.If multiple touches are present, use the Id property to distinguish between them.

Примечание

Этот класс содержит требование наследования на уровне класса, который применяется ко всем элементам.This class contains an inheritance demand at the class level that applies to all members. Объект SecurityException возникает, когда производный класс не имеет разрешения полного доверия.A SecurityException is thrown when the derived class does not have full-trust permission. Дополнительные сведения о требованиях безопасности см. в разделе требования связывания и требования наследования.For more information about security demands, see Link Demands and Inheritance Demands.

Конструкторы

TouchDevice(Int32) TouchDevice(Int32) TouchDevice(Int32) TouchDevice(Int32)

Вызывается из конструкторов в производных классах для инициализации класса TouchDevice.Called from constructors in derived classes to initialize the TouchDevice class.

Свойства

ActiveSource ActiveSource ActiveSource ActiveSource

Получает PresentationSource , сообщающий о вводе для этого устройства.Gets the PresentationSource that is reporting input for this device.

Captured Captured Captured Captured

Получает элемент, захвативший TouchDevice.Gets the element that captured the TouchDevice.

CaptureMode CaptureMode CaptureMode CaptureMode

Получает политику захвата TouchDevice.Gets the capture policy of the TouchDevice.

DirectlyOver DirectlyOver DirectlyOver DirectlyOver

Получает элемент, прямо над под точкой сенсорного контакта.Gets the element that the touch contact point is directly over.

Dispatcher Dispatcher Dispatcher Dispatcher

Получает Dispatcher это DispatcherObject связан.Gets the Dispatcher this DispatcherObject is associated with.

(Inherited from DispatcherObject)
Id Id Id Id

Получает уникальный идентификатор TouchDevice, как предусмотрено в операционной системе.Gets the unique identifier of the TouchDevice, as provided by the operating system.

IsActive IsActive IsActive IsActive

Получает значение, указывающее, активно ли устройство.Gets a value that indicates whether the device is active.

Target Target Target Target

Получает элемент, получающий ввод с TouchDevice.Gets the element that receives input from the TouchDevice.

Методы

Activate() Activate() Activate() Activate()

Добавляет TouchDevice для системы входных сообщений.Adds the TouchDevice to the input messaging system.

Capture(IInputElement) Capture(IInputElement) Capture(IInputElement) Capture(IInputElement)

Захватывает касание заданного элемента с помощью Element режим записи.Captures a touch to the specified element by using the Element capture mode.

Capture(IInputElement, CaptureMode) Capture(IInputElement, CaptureMode) Capture(IInputElement, CaptureMode) Capture(IInputElement, CaptureMode)

Захватывает касание заданного элемента с использованием заданных CaptureMode.Captures a touch to the specified element by using the specified CaptureMode.

CheckAccess() CheckAccess() CheckAccess() CheckAccess()

Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)
Deactivate() Deactivate() Deactivate() Deactivate()

Удаляет TouchDevice из системы входных сообщений.Removes the TouchDevice from the input messaging system.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetIntermediateTouchPoints(IInputElement) GetIntermediateTouchPoints(IInputElement) GetIntermediateTouchPoints(IInputElement) GetIntermediateTouchPoints(IInputElement)

При переопределении в производном классе, возвращает все сенсорные точки, собранные между самым последним и предыдущим сенсорным событием.When overridden in a derived class, returns all touch points that are collected between the most recent and previous touch events.

GetTouchPoint(IInputElement) GetTouchPoint(IInputElement) GetTouchPoint(IInputElement) GetTouchPoint(IInputElement)

Возвращает текущую позицию сенсорного устройства относительно заданного элемента.Returns the current position of the touch device relative to the specified element.

GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
OnCapture(IInputElement, CaptureMode) OnCapture(IInputElement, CaptureMode) OnCapture(IInputElement, CaptureMode) OnCapture(IInputElement, CaptureMode)

Вызывается при захвате касания элементом.Called when a touch is captured to an element.

OnManipulationEnded(Boolean) OnManipulationEnded(Boolean) OnManipulationEnded(Boolean) OnManipulationEnded(Boolean)

Вызывается при завершении манипуляции.Called when a manipulation has ended.

OnManipulationStarted() OnManipulationStarted() OnManipulationStarted() OnManipulationStarted()

Вызывается при начале манипуляции.Called when a manipulation is started.

ReportDown() ReportDown() ReportDown() ReportDown()

Сообщает, что сенсорном нажатии на элемент.Reports that a touch is pressed on an element.

ReportMove() ReportMove() ReportMove() ReportMove()

Сообщает о сенсорном перемещении по элементу.Reports that a touch is moving across an element.

ReportUp() ReportUp() ReportUp() ReportUp()

Сообщает, что сенсорного ввода из элемента.Reports that a touch was lifted from an element.

SetActiveSource(PresentationSource) SetActiveSource(PresentationSource) SetActiveSource(PresentationSource) SetActiveSource(PresentationSource)

Наборы PresentationSource , сообщающий о вводе для этого устройства.Sets the PresentationSource that is reporting input for this device.

Synchronize() Synchronize() Synchronize() Synchronize()

Заставляет TouchDevice для синхронизации пользователей интерфейса с базовыми сенсорными точками.Forces the TouchDevice to synchronize the user interface with underlying touch points.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)
VerifyAccess() VerifyAccess() VerifyAccess() VerifyAccess()

Обеспечивает, что вызывающий поток имеет доступ к этому DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)

События

Activated Activated Activated Activated

Происходит, если TouchDevice добавляется в систему обмена сообщениями на входе.Occurs when the TouchDevice is added to the input messaging system.

Deactivated Deactivated Deactivated Deactivated

Происходит при TouchDevice удаляется из системы входных сообщений.Occurs when the TouchDevice is removed from the input messaging system.

Updated Updated Updated Updated

Происходит при отправлении сенсорного сообщения.Occurs when a touch message is sent.

Явные реализации интерфейса

IManipulator.GetPosition(IInputElement) IManipulator.GetPosition(IInputElement) IManipulator.GetPosition(IInputElement) IManipulator.GetPosition(IInputElement)

Возвращает позицию IManipulator объекта.Returns the position of the IManipulator object.

IManipulator.Id IManipulator.Id IManipulator.Id IManipulator.Id

Получает уникальный идентификатор TouchDevice предоставленное операционной системы.Gets the unique identifier of the TouchDevice as provided by the operating system.

IManipulator.ManipulationEnded(Boolean) IManipulator.ManipulationEnded(Boolean) IManipulator.ManipulationEnded(Boolean) IManipulator.ManipulationEnded(Boolean)

Происходит при завершении манипуляции.Occurs when a manipulation has ended.

Безопасность

UIPermission
для создания производного от этого класса.for deriving from this class. Действие по обеспечению безопасности: InheritanceDemand.Security action: InheritanceDemand. Связанное перечисление: UnrestrictedAssociated enumeration: Unrestricted

Применяется к