Share via


TouchFrameEventArgs.GetPrimaryTouchPoint(IInputElement) Metoda

Definice

Vrátí aktuální dotykový bod primárního dotykového zařízení vzhledem k zadanému prvku.

public:
 System::Windows::Input::TouchPoint ^ GetPrimaryTouchPoint(System::Windows::IInputElement ^ relativeTo);
public System.Windows.Input.TouchPoint GetPrimaryTouchPoint (System.Windows.IInputElement relativeTo);
member this.GetPrimaryTouchPoint : System.Windows.IInputElement -> System.Windows.Input.TouchPoint
Public Function GetPrimaryTouchPoint (relativeTo As IInputElement) As TouchPoint

Parametry

relativeTo
IInputElement

Element, který definuje souřadnicový prostor. Pokud chcete použít absolutní souřadnice WPF, zadejte relativeTo jako null.

Návraty

Aktuální pozice primárního TouchDevice prvku vzhledem k zadanému prvku; nebo null pokud primární TouchDevice prvek není aktivní.

Příklady

Následující kód zpracovává dotykové body, které jsou načteny z .TouchFrameEventArgs Když stisknete dotyk na Canvas, TouchDevice zachytí se do Canvas. Po zvednutí dotyku TouchDevice se funkce uvolní. Když se dotyk přesune přes Canvas, zaškrtne se Id . Pokud se hodnota Id shoduje Id s primárním dotykovým bodem, který označuje první dotyk, zaznamená se jeho poloha. Pokud pohyb pochází z druhého dotyku, je čára nakreslena z pozice prvního dotyku do pozice druhého dotyku.

Tento příklad je součástí většího příkladu, který je k dispozici v přehledu Touch třídy.

foreach (TouchPoint _touchPoint in e.GetTouchPoints(this.canvas1))
{
    if (_touchPoint.Action == TouchAction.Down)
    {
        // Clear the canvas and capture the touch to it.
        this.canvas1.Children.Clear();
        _touchPoint.TouchDevice.Capture(this.canvas1);
    }

    else if (_touchPoint.Action == TouchAction.Move && e.GetPrimaryTouchPoint(this.canvas1) != null)
    {   
        // This is the first (primary) touch point. Just record its position.
        if (_touchPoint.TouchDevice.Id == e.GetPrimaryTouchPoint(this.canvas1).TouchDevice.Id)
        {
            pt1.X = _touchPoint.Position.X;
            pt1.Y = _touchPoint.Position.Y;
        }

        // This is not the first touch point. Draw a line from the first point to this one.
        else if (_touchPoint.TouchDevice.Id != e.GetPrimaryTouchPoint(this.canvas1).TouchDevice.Id)
        {
            pt2.X = _touchPoint.Position.X;
            pt2.Y = _touchPoint.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;
            this.canvas1.Children.Add(_line);
        }
    }

    else if (_touchPoint.Action == TouchAction.Up)
    {
        // If this touch is captured to the canvas, release it.
        if (_touchPoint.TouchDevice.Captured == this.canvas1)
        {
            this.canvas1.ReleaseTouchCapture(_touchPoint.TouchDevice);
        }
    }
}
For Each _touchPoint In e.GetTouchPoints(Me.canvas1)

    If _touchPoint.Action = TouchAction.Down Then
        ' Clear the canvas and capture the touch to it.
        canvas1.Children.Clear()
        _touchPoint.TouchDevice.Capture(canvas1)

    ElseIf _touchPoint.Action = TouchAction.Move Then
        ' This is the first (primary) touch point. Just record its position.
        If _touchPoint.TouchDevice.Id = e.GetPrimaryTouchPoint(Me.canvas1).TouchDevice.Id Then
            pt1.X = _touchPoint.Position.X
            pt1.Y = _touchPoint.Position.Y

            ' This is not the first touch point; draw a line from the first point to this one.
        ElseIf _touchPoint.TouchDevice.Id <> e.GetPrimaryTouchPoint(Me.canvas1).TouchDevice.Id Then
            pt2.X = _touchPoint.Position.X
            pt2.Y = _touchPoint.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
            Me.canvas1.Children.Add(_line)
        End If

    ElseIf _touchPoint.Action = TouchAction.Up Then
        ' If this touch is captured to the canvas, release it.
        If (_touchPoint.TouchDevice.Captured Is canvas1) Then
            canvas1.ReleaseTouchCapture(_touchPoint.TouchDevice)
        End If
    End If
Next

Poznámky

V sadě aktivních dotykových zařízení je prvním zařízením Activated primární dotykové zařízení. Pokud se například dva prsty dotýkají obrazovky, je první prst, který je dole, reprezentován primárním dotykovým zařízením. Pokud je první prst zvednut, zatímco druhý prst je stále dole, primární dotykové zařízení se změní na null.

Platí pro