TouchFrameEventArgs.GetTouchPoints(IInputElement) 方法      
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个集合,其中包含每个活动触摸设备相对于指定元素的当前触点。
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
	参数
- relativeTo
 - IInputElement
 
用于定义坐标空间的元素。 若要使用 WPF 绝对坐标,则将 relativeTo 指定为 null。
返回
一个集合,其中包含每个活动 TouchPoint 的当前 TouchDevice。
示例
以下代码处理从 检索到的 TouchFrameEventArgs触摸点。 在画布上按下触摸时, TouchDevice 会捕获到画布上。 当引发触摸时,将 TouchDevice 释放 。 当触摸在画布上移动时 Id ,会选中 。 如果 与 Id 主要触摸点的 匹配 Id (指示第一次触摸),则会记录其位置。 如果移动来自第二次触摸,则会从第一次触摸的位置到第二次触摸的位置绘制一条线。
此示例是类概述中提供的更大示例的一 Touch 部分。
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