Archivieren

Archive for the 'WPF' Category

Touch-Unterstützung in WPF

8. Oktober 2010 5 Kommentare

Dieser Beitrag ist eine leichte Modifikation des Touch und Manipulation auf MSDN, als eine schnelle Übersicht und Referenz für mich auf WPF-Touch-Unterstützung.

Überblick

Neue Hard-und API in der Windows 7-Betriebssystem bieten Anwendungen die Möglichkeit, Input von mehreren Berührungen gleichzeitig zu empfangen. WPF ermöglicht Anwendungen zu erfassen und darauf zu reagieren in einer Weise ähnlich der Reaktion auf den anderen Eingang, wie beispielsweise der Maus oder Tastatur, indem Ereignisse auftritt, wenn Berührungseingaben berühren.

WPF stellt zwei Arten von Ereignissen, wenn Berührung tritt: Touch-Events und Veranstaltungen Manipulation. Touch-Veranstaltungen bieten Rohdaten über jeden Finger auf einem Touchscreen und seine Bewegung. Manipulation Ereignisse interpretieren die Eingabe als bestimmte Aktionen.

Voraussetzungen

Sie benötigen die folgenden Komponenten, um eine Anwendung, die auf Berührung reagiert, zu entwickeln.

  • Microsoft Visual Studio 2010.
  • Windows 7.
  • Ein Gerät, wie einen Touchscreen, der Windows Touch unterstützt.

WPF stellt zwei Arten von Ereignissen, wenn Berührung tritt: Touch-Events und Veranstaltungen Manipulation. Touch-Veranstaltungen bieten Rohdaten über jeden Finger auf einem Touchscreen und seine Bewegung. Manipulation Ereignisse interpretieren die Eingabe als bestimmte Aktionen.

Terminologie

Die folgenden Begriffe werden verwendet, wenn Touch wird diskutiert.

  • Touch ist eine Art von Benutzereingaben, die von Windows 7 erkannt wird. In der Regel wird Touch, indem man die Finger auf einem Touchscreen-Display gestartet. Beachten Sie, dass Geräte wie ein Touchpad, das gemeinsam auf Laptop-Computern ist nicht unterstützen Touch, wenn das Gerät lediglich konvertiert die Finger die Position und Bewegung als Maus-Eingabe.
  • Multitouch ist Berührung, die aus mehr als einem Punkt gleichzeitig auftritt. Windows 7 und WPF unterstützt Multitouch. Immer, wenn Touch in der Dokumentation für WPF wird diskutiert, gelten die Konzepte zu Multitouch.
  • Eine Manipulation tritt auf, wenn touch als körperliche Aktion, die auf ein Objekt angewendet wird, interpretiert wird. In WPF interpretieren Manipulation Ereignisse Eingang als Übersetzung, Expansion oder Rotation Manipulation.
  • Ein Touch-Gerät stellt eine Vorrichtung, die Touch-Eingabe, wie zB einem Finger auf einem Touchscreen erzeugt.
Steuerelemente, die auf Berührung reagieren

Die folgenden Steuerelemente können durch Ziehen mit dem Finger über die Kontrolle, wenn es Inhalte, die per Bildlauf aus der Ansicht hat gescrollt werden.

    Klassendiagramm

    Im Folgenden Klassendiagramm verdeutlicht die wichtigsten Klassen und ihre Mitglieder für Touch-Unterstützung:

    WPF Touch Events Class Diagram

    • Berühren Sie
      • Touch-Ereignisse werden sowohl von exponierten UIElement , UIElement3D und ContentElement als sprudelnde Ereignisse und via Touchscreen . FrameReported als Application Level Event (um die Kompatibilität mit Silverlight).
      • Während der Landung, Umzug und Veranstaltungen bis Tunneling und sprudelnden sind, berühren Sie betreten und verlassen Ereignisse werden nur sprudeln.
      • Touch-Gerät Capture ist explizit über UIElement . CaptureTouch Methode.
      • Touch-Ereignisse sind synchron.
      • Touch-Ereignisse werden immer gefeuert, ob Manipulation Ereignisse ausgelöst werden oder nicht.
      • WPF unterstützt Multitouch.
    • Manipulation
      • Ereignisse werden durch Manipulation ausgesetzt UIElement als Bubbling-Ereignis nur.
      • Manipulation Ereignisse basieren auf einem gefeuert UIElement nur seine IsManipulationEnabled ist wahr.
      • Manipulation Ereignisse sind synchron.
      • WPF unterstützt drei Arten von Manipulation: Expansion und Rotation (einschließlich einzelner Finger Rotation mit Drehpunkt) und Trägheit.
      • Capture-Touch-Gerät ist implizit mit Manipulation.
      • Statische Klasse Manipulation enthält Methoden zu erhalten und zu aktualisieren Manipulation Parameter außerhalb der Manipulation Event-Handler. Es enthält auch Methoden für die erweiterte Anwendung der Manipulation Logik, wie das Hinzufügen Hinzufügen und Entfernen von Manipulatoren.
      • WPF unterstützt verschiedene Gesten.
      • WPF unterstützt keine Gesten oder 3D-Manipulation.
    • ScrollViewer hat eine integrierte Unterstützung für die Manipulation und Trägheit, und es ist durch anpassbare Anwendungen.

    Berühren Sie

    Touch-Events

    Die Basisklassen, UIElement , UIElement3D und ContentElement , Ereignisse definieren, die Sie abonnieren können, damit Ihre Bewerbung wird auf Berührung reagieren. Touch-Ereignisse sind nützlich, wenn Ihre Anwendung interpretiert Touch als etwas anderes als ein Objekt zu manipulieren. Zum Beispiel würde eine Anwendung, die ein Benutzer mit einem oder mehreren Fingern ziehen können Informationen über Ereignisse zu berühren.

    Alle drei Klassen definieren die folgenden Ereignisse, die sich ähnlich verhalten, unabhängig von der definierenden Klasse.

    Wie die Tastatur-und Mausereignisse werden die Touch-Events Veranstaltungen geleitet. Die Ereignisse, die mit Vorschau beginnen, sind Tunnel-Events und die Ereignisse, die mit Touch beginnen sprudeln Ereignisse. Wenn Sie diese Ereignisse zu behandeln, können Sie die Position des Eingangs, bezogen auf ein beliebiges Element, durch den Aufruf der GetTouchPoint oder GetIntermediateTouchPoints Methode.

    Die Execution Path of Touch-Events

    Um die Interaktion zwischen den Touch-Ereignisse zu verstehen, betrachten Sie das Szenario, wo ein Benutzer legt einen Finger auf ein Element, bewegt den Finger in das Element, und dann hebt den Finger aus dem Element. Die folgende Abbildung zeigt die Ausführung der sprudelnden Ereignisse (die Tunneling-Ereignisse werden der Einfachheit halber weggelassen).

    Die folgende Liste beschreibt die Abfolge der Ereignisse in der vorherigen Abbildung. The sequence of touch events.

    1. Die TouchEnter ein Ereignis eintritt, wenn der Benutzer legt einen Finger auf das Element.

    2. Die TouchDown Ereignis eintritt einmal.

    3. Die TouchMove Ereignis tritt mehrere Male, wenn der Benutzer den Finger in dem Element.

    4. Das TouchUp ein Ereignis eintritt, wenn der Benutzer hebt den Finger aus dem Element.

    5. Die TouchLeave Ereignis eintritt einmal.

      Wenn mehr als zwei Finger verwendet werden, treten die Ereignisse für jeden Finger.

    Manipulation und Trägheit

    Manipulation Veranstaltungen

    Für Fälle, in denen eine Anwendung ein Benutzer ein Objekt manipulieren können, die UIElement Klasse definiert Ereignisse Manipulation. Im Gegensatz zu den Touch-Ereignisse, die einfach nur berichten, die Position der Berührung, berichten die Manipulation Ereignisse, wie die Eingabe interpretiert werden kann. Es gibt drei Arten von Manipulationen, Übersetzung, Expansion und Rotation. Die folgende Liste beschreibt, wie man die drei Arten von Manipulationen zu berufen.

    • Legen Sie einen Finger auf ein Objekt und bewegen Sie den Finger über den Touchscreen, eine Übersetzung Manipulation zu berufen. Diese in der Regel bewegt sich das Objekt.

    • Legen Sie zwei Finger auf ein Objekt und bewegen Sie die Finger näher zusammen oder weiter voneinander entfernt, um eine Ausweitung Manipulation zu berufen. Diese in der Regel die Größe des Objekts.

    • Legen Sie zwei Finger auf ein Objekt und drehen Sie die Finger umeinander, um eine Rotation Manipulation zu berufen. Diese Regel dreht das Objekt.

    Mehr als eine Art von Manipulation können gleichzeitig auftreten.

    Wenn Sie Objekte auf Manipulationen reagieren verursachen, können Sie das Objekt erscheinen Trägheit haben. Diese können Sie Ihre Objekte zu simulieren, die physische Welt. Zum Beispiel, wenn Sie ein Buch über einen Tisch schieben, wenn man hart genug schieben das Buch bewegt sich weiterhin, nachdem Sie sie freizugeben. WPF ermöglicht es Ihnen, dieses Verhalten durch eine Erhöhung Manipulation Ereignisse nach den Fingern des Benutzers gibt das Objekt zu simulieren.

    Für Informationen dazu, wie eine Anwendung, die dem Benutzer ermöglicht sich zu bewegen erstellen, vergrößern, verkleinern und drehen Sie ein Objekt, finden Sie unter Exemplarische Vorgehensweise: Erstellen des ersten Touch-Anwendung .

    Das UIElement definiert die folgenden Ereignisse Manipulation.

    Standardmäßig wird ein UIElement nicht erhalten diese Manipulation Veranstaltungen. Um Manipulationen Ereignisse auf einem Empfang UIElement , Set UIElement.IsManipulationEnabled zu wahren.

    Der Ausführungspfad Manipulation Veranstaltungen

    Betrachten wir ein Szenario, wo ein Benutzer "wirft" ein Objekt. Der Benutzer legt einen Finger auf das Objekt, bewegt den Finger über den Touchscreen für eine kurze Strecke, und dann hebt den Finger, während sie sich bewegt. Das Ergebnis ist, dass das Objekt unter dem Finger des Benutzers bewegen und weiter zu bewegen, nachdem der Benutzer den Finger hebt.

    Die folgende Abbildung zeigt die Ausführung Pfad der Manipulation, Events und wichtige Informationen zu jeder Veranstaltung.

    Manipulation Ereignisse

    The sequence of manipulation events.

    Die folgende Liste beschreibt die Abfolge der Ereignisse in der vorherigen Abbildung.

    1. Die ManipulationStarting Ereignis eintritt, wenn der Benutzer legt einen Finger auf das Objekt. Unter anderem ermöglicht diese Veranstaltung, die Sie setzen, um die ManipulationContainer Eigentum. In den nachfolgenden Ereignissen, wird die Position der Manipulation relativ zum ManipulationContainer . In andere Ereignisse als ManipulationStarting , diese Eigenschaft kann nur gelesen werden, so dass die ManipulationStarting Veranstaltung ist das einzige Mal, dass Sie diese Eigenschaft festlegen.

    2. Die ManipulationStarted Ereignis eintritt nächsten. Dieses Ereignis meldet den Ursprung der Manipulation.

    3. Die ManipulationDelta Ereignis eintritt mehrfach als die Finger eines Benutzers auf einem Touchscreen zu bewegen. Die DeltaManipulation Eigentum des ManipulationDeltaEventArgs Klasse berichtet, ob die Manipulation als Bewegung, die Erweiterung oder Übersetzung interpretiert wird. Hier können Sie den Großteil der Arbeit der Manipulation eines Objekts durchzuführen.

    4. Die ManipulationInertiaStarting Ereignis tritt ein, wenn die Finger des Benutzers Kontakt mit dem Objekt zu verlieren. Diese Veranstaltung können Sie die Verzögerung der Manipulationen während der Trägheit angeben. Dies ist so, Ihr Objekt können unterschiedliche physikalische Räume oder Attribute zu emulieren, wenn Sie sich entscheiden. Angenommen, Ihre Anwendung hat zwei Objekte, die Elemente in der physischen Welt zu repräsentieren, und man ist schwerer als die anderen. Sie können das schwerere Objekt schneller als das leichtere Objekt abbremsen.

    5. Die ManipulationDelta Ereignis eintritt mehrfach als Trägheit auftritt. Beachten Sie, dass dieses Ereignis, wenn die Finger des Benutzers über den Touchscreen bewegen, und wenn WPF simuliert Trägheit auftritt. Mit anderen Worten, ManipulationDelta erfolgt vor und nach dem ManipulationInertiaStarting Ereignis. Die ManipulationDeltaEventArgs.IsInertial Eigenschaft meldet, ob die ManipulationDelta Ereignis tritt während Trägheit, so können Sie überprüfen, dass Eigentum und verschiedene Aktionen ausführen, je nach seinem Wert.

    6. Die ManipulationCompleted Ereignis tritt ein, wenn die Manipulation und jede Trägheit endet. Das heißt, nachdem alle ManipulationDelta Ereignisse eintreten, die ManipulationCompleted tritt Ereignis, um zu signalisieren, dass die Manipulation abgeschlossen ist.

    Boundary Meinung

    Das UIElement definiert auch die ManipulationBoundaryFeedback Veranstaltung. Dieses Ereignis tritt ein, wenn die ReportBoundaryFeedback Methode in der aufgerufen wird ManipulationDelta Veranstaltung. Die ManipulationBoundaryFeedback Ereignis ermöglicht Anwendungen oder Komponenten, um visuelles Feedback geben, wenn ein Objekt trifft eine Grenze. Zum Beispiel kann die Fenster verarbeitet Klasse die ManipulationBoundaryFeedback Ereignis zu bewirken, dass das Fenster geringfügig bewegt, wenn die Kante angetroffen wird.

    Maus-Promotion

    Sie können die Manipulation durch den Aufruf der stornieren Abbrechen Methode bei dem Ereignis Argumente in jedem Fall außer Manipulation ManipulationBoundaryFeedback Veranstaltung. Wenn Sie anrufen stornieren , werden die Manipulation Ereignisse nicht mehr angehoben und Mausereignisse treten für Touch. Die folgende Tabelle beschreibt die Beziehung zwischen der Zeit der Manipulation wird aufgehoben und die Maus-Ereignisse, die auftreten können.


    Der Fall, dass in Cancel wird als

    Die Maus-Ereignisse, die für die Eingabe, die bereits eingetreten auftreten

    ManipulationStarting   und

    ManipulationStarted

    Maus nach unten Veranstaltungen.

    ManipulationDelta

    Maus nach unten und Mausbewegungsereignisse.

    ManipulationInertiaStarting   und

    ManipulationCompleted

    Maus nach unten, Maus bewegen und die Maus zu aktivieren.

    Beachten Sie, wenn Sie anrufen Abbrechen , wenn die Manipulation ist in Trägheit, die Methode false zurückgibt und die Eingabe nicht erhöhen Mausereignisse.

    Die Beziehung zwischen Touch und Manipulation Veranstaltungen

    Ein UIElement ist immer empfangsbereit Touch-Events. Wenn die IsManipulationEnabled -Eigenschaft auf true gesetzt ist, ein UIElement empfangen können sowohl Berührung und Manipulation Veranstaltungen. Wenn die TouchDown Ereignis nicht behandelt wird (das heißt, die Handled ist Eigentum false) fängt die Manipulation Logik des Touch auf das Element und erzeugt die Manipulation Veranstaltungen. Wenn die Handled -Eigenschaft auf true gesetzt in der TouchDown Veranstaltung, wird die Manipulation Logik nicht erzeugen Manipulation Veranstaltungen. Die folgende Abbildung zeigt die Beziehung zwischen Touch-Events und Veranstaltungen Manipulation.

    Touch und Manipulation Ereignisse

    Relationship between touch and manipulation events

    Die folgende Liste beschreibt die Beziehung zwischen der Berührung und Manipulation Ereignisse, die in der vorangehenden Abbildung gezeigt wird.

        EventArgs Klassendiagramm

      Im Folgenden Klassendiagramm zeigt die ganze Note und Manipulation EventArgs-Klassen und relevanten Arten.

      WPF Touch EventArgs Class Diagram
    Tags: , , Kategorien: WPF Tags: , ,