Nyelv

TouchDevice Osztály

Definíció

Egyetlen érintéses bemenetet jelöl, amelyet egy ujjal hoz létre egy érintőképernyőn.

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
Öröklődés
Megvalósítás

Példák

Az alábbi példa lehetővé teszi, hogy egyszerű mintákat hozzon létre egy Canvas érintőképernyőn két ujjának húzásával. Minden érintést a TouchDeviceTouchEventArgs. A minta úgy jön létre, hogy egy vonalat rajzol az érintések által biztosított érintési pontok között. Ehhez a példához Windows érintőképernyős képernyőre van szükség.

Az alábbi korrektúra létrehozza a felhasználói felületet, amely egy Canvas rács közepén található, és csatolja az eseménykezelőket az érintéses eseményekhez.

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

Az alábbi kód kezeli az érintéses eseményeket. Ha egy érintést lenyom a Canvasgombra, a TouchDevice rendszer rögzíti a elemet.Canvas Az érintés felemelésekor a készülék felengedi a készüléket TouchDevice . Ha egy érintés a képernyőn Canvasmozog, a rendszer bejelöli a Id gombot. Ha az áthelyezés az első érintésről érkezett, a rendszer rögzíti a helyét. Ha az áthelyezés a második érintésről érkezett, az első érintés helyzetéből a második érintés pozíciójába húzunk egy vonalat.

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

Megjegyzések

Általában a TouchDevice tulajdonság használatával fér hozzá egyhez TouchEventArgs.TouchDevice . Az A TouchDevice egyetlen érintést jelöli a képernyőn. Ha több érintés is jelen van, a Id tulajdonság használatával különbséget tesz közöttük.

Note

Ez az osztály az összes tagra vonatkozó öröklési igényt tartalmaz az osztály szintjén. Az A SecurityException akkor jön létre, ha a származtatott osztály nem rendelkezik teljes megbízhatósági engedéllyel. A biztonsági követelményekről további információt a Követelmények csatolása és az Öröklési igények hivatkozása című témakörben talál.

Konstruktorok

Name Description
TouchDevice(Int32)

A származtatott osztályok konstruktoraitól az osztály inicializálásához TouchDevice hívható meg.

Tulajdonságok

Name Description
ActiveSource

Lekéri az PresentationSource eszközhöz tartozó jelentési bemenetet.

Captured

Lekéri az elemet, amely rögzítette a TouchDevice.

CaptureMode

Lekéri a rögzítési szabályzatot a TouchDevice.

DirectlyOver

Lekéri azt az elemet, amellyel az érintéses kapcsolati pont közvetlenül átkerül.

Dispatcher

Lekérdezi, Dispatcher hogy ez a társítva van-e DispatcherObject .

(Öröklődés forrása DispatcherObject)
Id

Lekéri az operációs rendszer által biztosított egyedi azonosítót TouchDevice.

IsActive

Olyan értéket kap, amely jelzi, hogy az eszköz aktív-e.

Target

Lekéri a bemenetet fogadó elemet a TouchDevice.

Metódusok

Name Description
Activate()

Hozzáadja a TouchDevice bemeneti üzenetkezelő rendszerhez.

Capture(IInputElement, CaptureMode)

A megadott elem érintését rögzíti a megadott CaptureModeelem használatával.

Capture(IInputElement)

Rögzíti a megadott elem érintését a rögzítési Element mód használatával.

CheckAccess()

Meghatározza, hogy a hívó szál hozzáfér-e ehhez DispatcherObject.

(Öröklődés forrása DispatcherObject)
Deactivate()

Eltávolítja a TouchDevice bemeneti üzenetkezelő rendszerből.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetIntermediateTouchPoints(IInputElement)

Ha egy származtatott osztályban felül van bírálva, a legutóbbi és az előző érintéses események között összegyűjtött összes érintési pontot visszaadja.

GetTouchPoint(IInputElement)

Az érintőeszköz aktuális pozícióját adja vissza a megadott elemhez képest.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OnCapture(IInputElement, CaptureMode)

Egy elem érintésének rögzítésekor hívható meg.

OnManipulationEnded(Boolean)

Akkor hívják, amikor egy manipuláció véget ért.

OnManipulationStarted()

A manipuláció indításakor hívjuk.

ReportDown()

Azt jelenti, hogy egy érintés egy elemre van nyomva.

ReportMove()

Azt jelenti, hogy egy érintés egy elemen halad át.

ReportUp()

Azt jelenti, hogy egy érintést emeltek ki egy elemből.

SetActiveSource(PresentationSource)

Beállítja az PresentationSource eszközhöz tartozó jelentési bemenetet.

Synchronize()

Kényszeríti a TouchDevice felhasználói felület szinkronizálását az alapul szolgáló érintőpontokkal.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
VerifyAccess()

Kényszeríti, hogy a hívószál hozzáférhessen ehhez.DispatcherObject

(Öröklődés forrása DispatcherObject)

esemény

Name Description
Activated

Akkor fordul elő, ha a TouchDevice rendszer hozzáadja a bemeneti üzenetküldő rendszerhez.

Deactivated

Akkor fordul elő, ha a TouchDevice rendszer eltávolítja a bemeneti üzenetkezelő rendszerből.

Updated

Érintéses üzenet küldésekor fordul elő.

Explicit interfész-implementációk

Name Description
IManipulator.GetPosition(IInputElement)

Az objektum pozícióját IManipulator adja vissza.

IManipulator.Id

Lekéri az TouchDevice operációs rendszer által megadott egyedi azonosítót.

IManipulator.ManipulationEnded(Boolean)

Akkor fordul elő, ha egy manipuláció véget ért.

A következőre érvényes: