TouchDevice Sınıf

Tanım

Dokunmatik ekranda bir parmakla üretilen tek bir dokunmatik girişi temsil eder.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
Devralma
Uygulamalar

Örnekler

Aşağıdaki örnek, bir Canvas dokunmatik ekranda iki parmağınızı sürükleyerek bir üzerinde basit desenler oluşturmanızı sağlar.The following example enables you to create simple patterns on a Canvas by dragging two fingers on a touchscreen. Her dokunma, içinde bir ile temsil edilir TouchDevice TouchEventArgs .Each touch is represented by a TouchDevice in the TouchEventArgs. Desenler, dokunmadan temin edilen dokunma noktaları arasına bir çizgi çizerek oluşturulur.The pattern is created by drawing a line between the touch points that are provided by the touches. Bu örnek, Windows Touch ile uyumlu bir ekran gerektirir.This example requires a Windows Touch-compatible screen.

Aşağıdaki biçimlendirme, bir Canvas kılavuzda ortalanmış olan ve dokunma olayları için olay işleyicilerini ekleyen Kullanıcı arabirimini oluşturur.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>

Aşağıdaki kod dokunma olaylarını işler.The following code handles the touch events. Üzerinde bir dokunma basıldığında,, Canvas TouchDevice öğesine yakalanır Canvas .When a touch is pressed on the Canvas, the TouchDevice is captured to the Canvas. Dokunma yükseltilmemiş olduğunda, TouchDevice serbest bırakılır.When the touch is lifted, the TouchDevice is released. Bir dokunma üzerine geldiğinde, Canvas Id denetlenir.When a touch moves on the Canvas, the Id is checked. Taşıma ilk dokunmadan geldiyse, konumu kaydedilir.If the move came from the first touch, its location is recorded. Taşıma ikinci dokunmadan geldiyse, ikinci dokunma konumuna ilk dokunmadan oluşan konumdan bir çizgi çizilir.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

Açıklamalar

Genellikle TouchDevice özelliğini kullanarak bir erişebilirsiniz TouchEventArgs.TouchDevice .You typically access a TouchDevice by using the TouchEventArgs.TouchDevice property. Bir TouchDevice ekranda tek bir dokunmayı temsil eder.A TouchDevice represents a single touch on a screen. Birden çok dokunmanız varsa, aralarında Id ayrım yapmak için özelliğini kullanın.If multiple touches are present, use the Id property to distinguish between them.

Not

Bu sınıf, tüm Üyeler için geçerli olan sınıf düzeyinde bir devralma talebi içerir.This class contains an inheritance demand at the class level that applies to all members. SecurityExceptionTüretilmiş sınıf tam güven iznine sahip olmadığında oluşturulur.A SecurityException is thrown when the derived class does not have full-trust permission. Güvenlik talepleri hakkında daha fazla bilgi için bkz. bağlantı talepleri ve Devralma talepleri.For more information about security demands, see Link Demands and Inheritance Demands.

Oluşturucular

TouchDevice(Int32)

Sınıfı başlatmak için türetilmiş sınıflarda oluşturuculardan çağırılır TouchDevice .Called from constructors in derived classes to initialize the TouchDevice class.

Özellikler

ActiveSource

PresentationSourceBu cihaz için raporlama girişi olduğunu alır.Gets the PresentationSource that is reporting input for this device.

Captured

Tarafından yakalanan öğeyi alır TouchDevice .Gets the element that captured the TouchDevice.

CaptureMode

Yakalama ilkesini alır TouchDevice .Gets the capture policy of the TouchDevice.

DirectlyOver

Dokunma iletişim noktasının doğrudan üzerinde olduğu öğeyi alır.Gets the element that the touch contact point is directly over.

Dispatcher

Dispatcher DispatcherObject İle ilişkili olduğunu alır.Gets the Dispatcher this DispatcherObject is associated with.

(Devralındığı yer: DispatcherObject)
Id

TouchDeviceİşletim sistemi tarafından sağlandığı şekilde öğesinin benzersiz tanımlayıcısını alır.Gets the unique identifier of the TouchDevice, as provided by the operating system.

IsActive

Cihazın etkin olup olmadığını gösteren bir değer alır.Gets a value that indicates whether the device is active.

Target

Öğesinden girişi alan öğeyi alır TouchDevice .Gets the element that receives input from the TouchDevice.

Yöntemler

Activate()

Öğesini TouchDevice giriş mesajlaşma sistemine ekler.Adds the TouchDevice to the input messaging system.

Capture(IInputElement)

Yakalama modunu kullanarak belirtilen öğeye bir dokunma yakalar Element .Captures a touch to the specified element by using the Element capture mode.

Capture(IInputElement, CaptureMode)

Belirtilen öğeye, belirtilen öğeyi kullanarak bir dokunma yakalar CaptureMode .Captures a touch to the specified element by using the specified CaptureMode.

CheckAccess()

Çağıran iş parçacığının bu öğesine erişip erişemeyeceğini belirler DispatcherObject .Determines whether the calling thread has access to this DispatcherObject.

(Devralındığı yer: DispatcherObject)
Deactivate()

TouchDeviceGiriş mesajlaşma sisteminden öğesini kaldırır.Removes the TouchDevice from the input messaging system.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetIntermediateTouchPoints(IInputElement)

Türetilmiş bir sınıfta geçersiz kılındığında, en son ve önceki dokunma olayları arasında toplanan tüm dokunma noktalarını döndürür.When overridden in a derived class, returns all touch points that are collected between the most recent and previous touch events.

GetTouchPoint(IInputElement)

Dokunma cihazının belirtilen öğeye göre geçerli konumunu döndürür.Returns the current position of the touch device relative to the specified element.

GetType()

TypeGeçerli örneği alır.Gets the Type of the current instance.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
OnCapture(IInputElement, CaptureMode)

Bir dokunma bir öğeye yakalandıysa çağırılır.Called when a touch is captured to an element.

OnManipulationEnded(Boolean)

Bir düzenleme sona erdikten sonra çağırılır.Called when a manipulation has ended.

OnManipulationStarted()

Bir düzenleme başlatıldığında çağırılır.Called when a manipulation is started.

ReportDown()

Bir öğeye dokunarak basıldığında raporlar.Reports that a touch is pressed on an element.

ReportMove()

Bir dokunma öğesinin bir öğe üzerinde hareket ettirdiği raporlar.Reports that a touch is moving across an element.

ReportUp()

Bir Touch 'ın bir öğeden yükseltilmemiş olduğunu bildirir.Reports that a touch was lifted from an element.

SetActiveSource(PresentationSource)

PresentationSourceBu cihaz için raporlama girişi olduğunu ayarlar.Sets the PresentationSource that is reporting input for this device.

Synchronize()

, TouchDevice Kullanıcı arabirimini temeldeki dokunma noktalarıyla eşitlemeye zorlar.Forces the TouchDevice to synchronize the user interface with underlying touch points.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.Returns a string that represents the current object.

(Devralındığı yer: Object)
VerifyAccess()

Çağıran iş parçacığının buna erişimi olmasını zorlar DispatcherObject .Enforces that the calling thread has access to this DispatcherObject.

(Devralındığı yer: DispatcherObject)

Ekinlikler

Activated

TouchDeviceGiriş mesajlaşma sistemine eklendiğinde gerçekleşir.Occurs when the TouchDevice is added to the input messaging system.

Deactivated

TouchDeviceGiriş mesajlaşma sisteminden kaldırıldığında gerçekleşir.Occurs when the TouchDevice is removed from the input messaging system.

Updated

Dokunmatik bir ileti gönderildiğinde gerçekleşir.Occurs when a touch message is sent.

Belirtik Arabirim Kullanımları

IManipulator.GetPosition(IInputElement)

Nesnenin konumunu döndürür IManipulator .Returns the position of the IManipulator object.

IManipulator.Id

TouchDeviceİşletim sistemi tarafından belirtilen benzersiz tanımlayıcısını alır.Gets the unique identifier of the TouchDevice as provided by the operating system.

IManipulator.ManipulationEnded(Boolean)

Bir düzenleme sona erdikten sonra gerçekleşir.Occurs when a manipulation has ended.

Şunlara uygulanır