TouchDevice Klass

Definition

Representerar en enda pekinmatning som genereras av ett finger på en pekskärm.

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

Exempel

I följande exempel kan du skapa enkla mönster på en Canvas genom att dra två fingrar på en pekskärm. Varje touch representeras av en TouchDevice i TouchEventArgs. Mönstret skapas genom att rita en linje mellan de beröringspunkter som tillhandahålls av touch-strecken. Det här exemplet kräver en Windows Pekskärmskompatibel skärm.

Följande markering skapar användargränssnittet, som består av ett Canvas som är centrerat i ett rutnät, och kopplar händelsehanterarna för touch-händelserna.

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

Följande kod hanterar touchhändelserna. När en touch trycks på Canvas, TouchDevice fångas den till Canvas. När touchen lyfts frigörs den TouchDevice . När en touch flyttas på CanvasId , kontrolleras . Om flytten kom från den första touchen registreras dess plats. Om flytten kom från den andra touchen dras en linje från positionen för den första touchen till positionen för den andra touchen.

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

Kommentarer

Du får vanligtvis åtkomst till en TouchDevice med hjälp TouchEventArgs.TouchDevice av egenskapen . A TouchDevice representerar en enda touch på en skärm. Om det finns flera inslag använder du egenskapen Id för att skilja mellan dem.

Note

Den här klassen innehåller ett arvskrav på klassnivå som gäller för alla medlemmar. En SecurityException genereras när den härledda klassen inte har fullständig behörighet. Mer information om säkerhetskrav finns i Länka krav och arvskrav.

Konstruktorer

Name Description
TouchDevice(Int32)

Anropas från konstruktorer i härledda klasser för att initiera TouchDevice klassen.

Egenskaper

Name Description
ActiveSource

Hämtar som PresentationSource rapporterar indata för den här enheten.

Captured

Hämtar elementet som hämtade TouchDevice.

CaptureMode

Hämtar avbildningsprincipen för TouchDevice.

DirectlyOver

Hämtar elementet som touchkontaktpunkten är direkt över.

Dispatcher

Hämtar det Dispatcher som DispatcherObject är associerat med.

(Ärvd från DispatcherObject)
Id

Hämtar den unika identifieraren för TouchDevice, som tillhandahålls av operativsystemet.

IsActive

Hämtar ett värde som anger om enheten är aktiv.

Target

Hämtar elementet som tar emot indata från TouchDevice.

Metoder

Name Description
Activate()

TouchDevice Lägger till i indatameddelandesystemet.

Capture(IInputElement, CaptureMode)

Samlar in en touch till det angivna elementet med hjälp av den angivna CaptureMode.

Capture(IInputElement)

Samlar in en touch till det angivna elementet med hjälp av avbildningsläget Element .

CheckAccess()

Avgör om den anropande tråden har åtkomst till den här DispatcherObject.

(Ärvd från DispatcherObject)
Deactivate()

TouchDevice Tar bort från indatameddelandesystemet.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetIntermediateTouchPoints(IInputElement)

När det åsidosätts i en härledd klass returnerar alla beröringspunkter som samlas in mellan de senaste och tidigare touchhändelserna.

GetTouchPoint(IInputElement)

Returnerar den aktuella positionen för touch-enheten i förhållande till det angivna elementet.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnCapture(IInputElement, CaptureMode)

Anropas när en touch registreras till ett element.

OnManipulationEnded(Boolean)

Anropas när en manipulation har upphört.

OnManipulationStarted()

Anropas när en manipulering startas.

ReportDown()

Rapporterar att en touch trycks på ett element.

ReportMove()

Rapporterar att en touch rör sig över ett element.

ReportUp()

Rapporterar att en touch lyftes från ett element.

SetActiveSource(PresentationSource)

Anger som PresentationSource rapporterar indata för den här enheten.

Synchronize()

TouchDevice Tvingar användaren att synkronisera användargränssnittet med underliggande pekpunkter.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
VerifyAccess()

Framtvingar att den anropande tråden har åtkomst till den här DispatcherObject.

(Ärvd från DispatcherObject)

Händelser

Name Description
Activated

Inträffar när TouchDevice läggs till i indatameddelandesystemet.

Deactivated

Inträffar när TouchDevice tas bort från indatameddelandesystemet.

Updated

Inträffar när ett pekmeddelande skickas.

Explicita gränssnittsimplementeringar

Name Description
IManipulator.GetPosition(IInputElement)

Returnerar objektets IManipulator position.

IManipulator.Id

Hämtar den unika identifieraren för det TouchDevice som tillhandahålls av operativsystemet.

IManipulator.ManipulationEnded(Boolean)

Inträffar när en manipulation har avslutats.

Gäller för