TouchFrameEventArgs.GetTouchPoints(IInputElement) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí kolekci, která obsahuje aktuální dotykový bod pro každé aktivní dotykové zařízení vzhledem k zadanému prvku.
public:
System::Windows::Input::TouchPointCollection ^ GetTouchPoints(System::Windows::IInputElement ^ relativeTo);
public System.Windows.Input.TouchPointCollection GetTouchPoints(System.Windows.IInputElement relativeTo);
member this.GetTouchPoints : System.Windows.IInputElement -> System.Windows.Input.TouchPointCollection
Public Function GetTouchPoints (relativeTo As IInputElement) As TouchPointCollection
Parametry
- relativeTo
- IInputElement
Prvek, který definuje souřadnicový prostor. Pokud chcete použít WPF (Windows Presentation Foundation) absolutní souřadnice, zadejte relativeTo jako null.
Návraty
Kolekce, která obsahuje aktuální TouchPoint pro každou aktivní TouchDevice.
Příklady
Následující kód zpracuje dotykové body načtené z objektu TouchFrameEventArgs. Když se na plátně stiskne dotyk, TouchDevice zachytí se na plátno. Když je dotyk zvednut, uvolní se TouchDevice . Když se dotyk přesune přes plátno, zaškrtne se Id . Pokud odpovídá IdId primárnímu dotykovému bodu, který označuje první dotyk, jeho umístění se zaznamená. Pokud pohyb pochází z druhého dotyku, je čára nakreslena z pozice prvního dotyku na pozici 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