Udostępnij za pośrednictwem


TouchDevice Klasa

Definicja

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.

Dotyczy