Auf Englisch lesen

Teilen über


Touch.FrameReported Ereignis

Definition

Tritt auf, wenn eine Fingereingabenachricht gesendet wird.

C#
public static event System.Windows.Input.TouchFrameEventHandler FrameReported;

Ereignistyp

Beispiele

Im folgenden Beispiel wird das FrameReported-Ereignis verarbeitet. Wenn eine Toucheingabe auf den Canvasdrückt, wird der TouchDevice mit Canvaserfasst. Wenn die Berührung aufgehoben wird, wird die TouchDevice freigegeben. Wenn sich eine Berührung über die Canvasbewegt, wird aktiviert Id . Wenn die Bewegung von der ersten Berührung stammt, wird ihre Position aufgezeichnet. Wenn die Bewegung von der zweiten Berührung stammt, wird eine Linie von der Position der ersten Berührung bis zur Position der zweiten Berührung gezeichnet.

Dieses Beispiel ist Teil eines größeren Beispiels, das in der Touch Klassenübersicht verfügbar ist.

C#
public partial class MainWindow : Window
{
    // Variables for tracking the position of two points.
    Point pt1, pt2 = new Point();
    
    public MainWindow()
    {
        InitializeComponent();
        Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);
    }

    void Touch_FrameReported(object sender, TouchFrameEventArgs e)
    {
        if (this.canvas1 != null)
        {
            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);
                    }
                }
            }                        
        }
    }
}

Hinweise

Ein Frame ist einer aus einer Reihe von Multitouchnachrichten oder Touchpunkten. Sie können auf Berührungen reagieren, indem Sie das FrameReported Ereignis behandeln und auf die Details der TouchPoint aus den TouchFrameEventArgs Ereignisdaten zugreifen.

Das FrameReported Ereignis verwendet nicht das gleiche Ereignismodell wie andere WPF-Eingabeereignisse, z TouchDown . B. und TouchMove. Anstatt als elementspezifisches Ereignis verfügbar gemacht zu werden, das potenziell über die Objektstruktur einer Benutzeroberfläche weitergeleitet wird, ist das FrameReported Ereignis ein einzelnes Ereignis, das auf Anwendungsebene behandelt wird. Daher können Sie den sender Parameter des Ereignishandlers nicht verwenden, um zu bestimmen, welches Element berührt wird.

Gilt für:

Produkt Versionen
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10