Partager via


Manipulation directe

Les API De manipulation directe vous permettent de créer des expériences utilisateur panoramiques, zoom et glisser. Pour ce faire, il traite les entrées tactiles 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 grâce au traitement d’entrée hors thread, au test facultatif d’accès d’entrée hors thread et à la prédiction d’entrée/sortie.

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

Public de développeurs

L’API Manipulation directe s’adresse aux développeurs expérimentés qui connaissent C/C++, qui ont une bonne compréhension du modèle d’objet de composant (COM) et qui sont familiarisés avec les concepts de programmation Windows.

Conditions d’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

Direct Manipulation fonctionne en prédéclarant les comportements et les interactions pour une région ou un objet. Par exemple, une page web est souvent configurée pour un panoramique et un zoom. Au moment de l’exécution, l’entrée est ensuite associée à cette région/objet par le biais d’un simple appel d’API. À partir de ce point, La manipulation directe effectue tout le travail difficile du traitement de l’entrée, de l’application de contraintes et de la personnalité, et de 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 dans Direct Manipulation fournissent 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 basique se compose d’une fenêtre d’affichage, d’un contenu et d’interactions. La fenêtre d’affichage est une région qui peut recevoir et traiter des entrées provenant 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 se déplace ou met à l’échelle en réponse à une interaction utilisateur. Les interactions utilisateur principales (également appelées manipulations) prises en charge par La manipulation directe sont le panoramique et le zoom. Ces interactions appliquent une conversion ou une transformation de mise à l’é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 la manipulation directe de base avant et après panoramique.

Pendant l’initialisation de la manipulation directe, un objet DCompDirectManipulationCompositor est instancié et associé à la manipulation directe. Cet objet est un wrapper autour de DirectComposition, qui est le composant système. L’objet est responsable de l’application des transformations de sortie et de la conduite des mises à jour visuelles.

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

Dans notre cas de base ci-dessus, lorsque 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 manipulation directe.
  • Lorsque l’utilisateur déplace les mouvements, la fenêtre d’affichage déclenche les événements de mise à jour qui sont utilisés par le wrapper DirectComposition pour générer des mises à jour visuelles à l’écran. Pour un utilisateur qui effectue un panoramique 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 à mesure qu’il passe à une animation d’inertie, décélérant progressivement jusqu’à atteindre son emplacement de repos final.

Traitement des entrées clavier et souris

La manipulation directe permet de transférer manuellement les messages clavier et souris à partir du thread d’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 le HWND

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

Documentation associée