Partager via


Manipulation directe

Les API De manipulation directe vous permettent de créer un panoramique, un zoom et des expériences utilisateur de glisser. Pour ce faire, il traite l’entrée tactile sur une région ou un objet, génère des transformations de sortie et applique les transformations aux éléments d’interface utilisateur. Vous pouvez utiliser la manipulation directe pour optimiser la réactivité et réduire la latence via le traitement d’entrée hors thread, les tests d’accès d’entrée hors thread facultatifs et la prédiction d’entrée/sortie.

Toute application qui utilise la manipulation directe pour traiter les interactions tactiles affiche les animations Windows 8 fluides et les comportements de commentaires d’interaction conformes aux instructions pour les interactions utilisateur courantes.

Public des développeurs

L’API Manipulation directe est destinée aux développeurs expérimentés qui connaissent C/C++, ont une bonne compréhension du component Object Model (COM) et sont familiarisés avec les concepts de programmation Windows.

Conditions requises pour l’exécution

La manipulation directe a été introduite dans Windows 8. Il est inclus dans les versions 32 bits et 64 bits.

Pourquoi utiliser DirectManipulation

Gère les interactions de manière simple et cohérente

La manipulation directe fonctionne en prédéclarant les comportements et interactions d’une région ou d’un objet. Par exemple, une page web est souvent configurée pour le panoramique et le zoom. Au moment de l’exécution, l’entrée est ensuite associée à cette région/objet par le biais d’un appel d’API simple. À partir de ce stade, la manipulation directe effectue tout le travail lourd de traitement de l’entrée, l’application de contraintes et de personnalité, et la génération des transformations de sortie.

Créer des applications tactiles réactives

Pour optimiser la réactivité et réduire la latence, le traitement de manipulation directe se produit sur un thread distinct et indépendant du thread d’interface utilisateur. Par conséquent, les transformations de sortie peuvent s’exécuter en parallèle à l’activité sur le thread d’interface utilisateur. L’activité de thread d’interface utilisateur peut inclure la logique d’application, le rendu, la disposition et tout autre élément qui consomme des cycles sur le processeur.

Flexibilité de l’implémentation

Les interfaces incluses avec Direct Manipulation offrent une prise en charge complète de la gestion des entrées, de la reconnaissance des interactions, des notifications de commentaires et des mises à jour de l’interface utilisateur. Les interfaces incorporent également des services système tels que DirectComposition.

Concepts de base

L’implémentation de manipulation directe la plus simple se compose d’un de fenêtre d’affichage, d'de contenu et d’interactions . La fenêtre d’affichage est une région capable de recevoir et de traiter les entrées des interactions utilisateur. Il s’agit également de la région du contenu visible par l’utilisateur final. Le contenu est l’objet réel que les utilisateurs finaux peuvent voir et est ce qui déplace ou met à l’échelle en réponse à une interaction utilisateur. L’utilisateur principal interactions (également appelées manipulations ) prises en charge par la manipulation directe sont panoramiques et zoomées. Ces interactions appliquent une transformation de traduction ou d’échelle au contenu dans la fenêtre d’affichage, respectivement. Plusieurs fenêtres d’affichage (chacune avec son propre contenu) peuvent être configurées dans une seule fenêtre pour créer une expérience d’interface utilisateur riche.

Cette figure montre une implémentation de manipulation directe de base avant et après le panoramique.

implémentation de manipulation directe de base avant et après panoramique.

Lors de l’initialisation de la manipulation directe, un objet DCompDirectManipulationCompositor est instancié et associé à la manipulation directe. Cet objet est un wrapper autour DirectComposition, qui est le compositeur système. L’objet est chargé d’appliquer les transformations de sortie et de générer des mises à jour visuelles.

Un contact représente un point tactile identifié par le pointeur fourni dans le message WM/_POINTERDOWN. Lorsqu’un message WM_POINTERDOWN est reçu, l’application appelle SetContact. L’application avertit la manipulation directe des contacts qui doivent être gérés et les fenêtres d’affichage qui doivent réagir à ces contacts. Les entrées de clavier et de souris ont des valeurs pointeurId spéciales afin qu’elles puissent être gérées de manière appropriée par la manipulation directe.

Dans notre cas de base ci-dessus, quand SetContact est appelé quelques choses se produisent :

  • Lorsque l’utilisateur effectue un panoramique, un message WM/_POINTERCAPTURECHANGED est envoyé à l’application pour notifier que le contact a été consommé par la manipulation directe.
  • Lorsque l’utilisateur déplace le déplacement, la fenêtre d’affichage déclenche les événements de mise à jour utilisés par le wrapper DirectComposition pour générer des mises à jour visuelles à l’écran. Pour un panoramique utilisateur dans une fenêtre d’affichage, le contenu semble se déplacer en douceur sous le contact.
  • Lorsque l’utilisateur lève le contact, l’utilisateur voit le contenu continuer à se déplacer lorsqu’il passe en une animation d’inertie, décélérant progressivement jusqu’à ce qu’il atteigne son dernier emplacement de repos.

Traitement de l’entrée du clavier et de la souris

La manipulation directe permet aux messages clavier et souris d’être transférés manuellement à partir du thread de l’interface utilisateur de l’application via l’API ProcessInput afin qu’ils puissent être gérés de manière appropriée par manipulation directe.

DirectManipulation et HWND

La manipulation directe est associée à un HWND Win32 pour recevoir et traiter les messages d’entrée de pointeur pour cette fenêtre. À mesure que la manipulation directe calcule les valeurs de sortie, elle effectue des rappels asynchrones à l’objet COM (Direct Manipulation Component Object Model) qui sont implémentés dans l’application. Ces rappels informent l’application sur la transformation qui a été appliquée aux objets. La manipulation directe est activée sur le HWND spécifié en appelant Activer.

Justificatifs