Direkte Manipulation

Mit den APIs für die direkte Bearbeitung können Sie benutzerfreundliche Benutzererfahrungen schwenken, zoomen und ziehen. Hierzu verarbeitet er Toucheingaben für einen Bereich oder ein Objekt, generiert Ausgabetransformationen und wendet die Transformationen auf Benutzeroberflächenelemente an. Sie können die direkte Bearbeitung verwenden, um die Reaktionsfähigkeit zu optimieren und die Latenz zu reduzieren. Dazu werden die Verarbeitung von Eingaben aus dem Offthread, optionale Offthread-Eingabetreffertests und Eingabe-/Ausgabevorhersagen verwendet.

Jede Anwendung, die die direkte Manipulation verwendet, um Touchinteraktionen zu verarbeiten, zeigt die Windows 8 animationen und Interaktionsfeedbackverhalten an, die den Richtlinien für allgemeine Benutzerinteraktionen entsprechen.

Entwicklerzielgruppe

Die API für die direkte Bearbeitung ist für erfahrene Entwickler mit C/C++, mit fundierten Kenntnissen der Component Object Model (COM)und mit Windows Programmierkonzepten vertraut.

Laufzeitanforderungen

Die direkte Manipulation wurde in Windows 8. Sie ist sowohl in 32-Bit- als auch in 64-Bit-Versionen enthalten.

Gründe für die Verwendung von DirectManipulation

Behandeln von Interaktionen auf einfache und konsistente Weise

Die direkte Manipulation funktioniert, indem das Verhalten und die Interaktionen für einen Bereich oder ein Objekt vorab deklariert werden. Beispielsweise ist eine Webseite häufig für Schwenken und Zoomen konfiguriert. Zur Laufzeit wird die Eingabe dann dieser Region/diesem Objekt über einen einfachen API-Aufruf zugeordnet. Von diesem Punkt an übernimmt die direkte Manipulation die verarbeitung der Eingabe, das Anwenden von Einschränkungen und die Persönlichkeit sowie das Generieren der Ausgabetransformationen.

Erstellen reaktionsfähiger Touchanwendungen

Um die Reaktionsfähigkeit zu optimieren und die Latenz zu minimieren, erfolgt die Direkte Bearbeitungsverarbeitung in einem separaten, unabhängigen Thread vom UI-Thread. Daher können Ausgabetransformationen parallel zur Aktivität im UI-Thread ausgeführt werden. Die Ui-Threadaktivität kann Anwendungslogik, Rendering, Layout und alle anderen Elemente enthalten, die Zyklen auf dem Prozessor verbrauchen.

Implementierungsflexibilität

Die in der direkten Bearbeitung enthaltenen Schnittstellen bieten umfassende Unterstützung für Eingabebehandlung, Interaktionserkennung, Feedbackbenachrichtigungen und Aktualisierungen der Benutzeroberfläche. Die Schnittstellen umfassen auch Systemdienste wie DirectComposition.

Grundlegende Konzepte

Die grundlegendste Implementierung der direkten Bearbeitung besteht aus einem Viewport, Inhalt und Interaktionen. Der Viewport ist eine Region, die Eingaben von Benutzerinteraktionen empfangen und verarbeiten kann. Es ist auch der Bereich des Inhalts, der für den Endbenutzer sichtbar ist. Der Inhalt ist das eigentliche Objekt, das Endbenutzer sehen können, und ist das, was als Reaktion auf eine Benutzerinteraktion bewegt oder skaliert wird. Die primären Benutzerinteraktionen (auch als Manipulationen bezeichnet), die von der direkten Bearbeitung unterstützt werden, sind Schwenken und Zoomen. Diese Interaktionen wenden eine Übersetzungs- bzw. Skalierungstransformation auf den Inhalt innerhalb des Viewports an. Mehrere Viewports (jeweils mit eigenem Inhalt) können in einem einzelnen Fenster konfiguriert werden, um eine umfassende Benutzeroberfläche zu erstellen.

Diese Abbildung zeigt eine grundlegende Implementierung der direkten Manipulation vor und nach dem Schwenken.

grundlegende Direkte Manipulationsimplementierung vor und nach dem Schwenken.

Während der Initialisierung der direkten Manipulation wird ein DCompDirectManipulationCompositor-Objekt instanziiert und der direkten Manipulation zugeordnet. Dieses Objekt ist ein Wrapper um DirectComposition,bei dem es sich um den Systemkompositor handelt. Das -Objekt ist für das Anwenden der Ausgabetransformationen und das Erstellen visueller Updates verantwortlich.

Ein Kontakt stellt einen Berührungspunkt dar, der durch die pointerId identifiziert wird, die in der WM/_POINTERDOWN ist. Wenn eine WM _ POINTERDOWN-Nachricht empfangen wird, ruft die Anwendung SetContact auf. Die Anwendung benachrichtigt die direkte Bearbeitung über die Kontakte, die verarbeitet werden sollen, und die Viewports, die auf diese Kontakte reagieren sollen. Tastatur- und Mauseingaben verfügen über spezielle pointerId-Werte, damit sie von der direkten Bearbeitung entsprechend behandelt werden können.

In unserem grundlegenden Fall oben geschieht, wenn SetContact als bezeichnet wird, einige Dinge:

  • Wenn der Benutzer eine Schwenkung ausführt, wird eine WM/_POINTERCAPTURECHANGED-Nachricht an die Anwendung gesendet, um zu benachrichtigen, dass der Kontakt von der direkten Bearbeitung verwendet wurde.
  • Wenn der Benutzer die Verschiebebewegungen verschiebt, gibt der Viewport Updateereignisse aus, die vom DirectComposition-Wrapper verwendet werden, um visuelle Updates auf dem Bildschirm zu bewegen. Für einen Benutzer, der in einem Viewport schwenkt, scheint sich der Inhalt reibungslos unter dem Kontakt zu bewegen.
  • Wenn der Benutzer den Kontakt abhebt, sieht der Benutzer, dass sich der Inhalt weiter bewegt, während er in eine Trägheitsanimation übergeht, und sich allmählich verlangt, bis er seinen endgültigen Ruheort erreicht.

Verarbeiten von Tastatur- und Mauseingaben

Durch die direkte Manipulation können Tastatur- und Mausnachrichten manuell über die ProcessInput-API vom Ui-Thread der Anwendung weitergeleitet werden, damit sie von der direkten Bearbeitung entsprechend behandelt werden können.

DirectManipulation und das HWND

Die direkte Bearbeitung ist einem Win32 HWND zugeordnet, um Zeigereingabemeldungen für dieses Fenster zu empfangen und zu verarbeiten. Während die direkte Manipulation Ausgabewerte berechnet, werden asynchrone Rückrufe an die COM-Objekte (Direct Manipulation Component Object Model) durchgeführt, die in der Anwendung implementiert sind. Diese Rückrufe informieren die Anwendung über die Transformation, die auf die Objekte angewendet wurde. Die direkte Manipulation wird auf dem angegebenen HWND aktiviert, indem Activate (Aktivieren) aufruft.

Unterlagen