Compartilhar via


Manipulação direta

As APIs de Manipulação Direta permitem criar ótimas experiências de usuário de painel, zoom e arrastar. Para fazer isso, ele processa a entrada por toque em uma região ou objeto, gera transformações de saída e aplica as transformações aos elementos da interface do usuário. Você pode usar a Manipulação Direta para otimizar a capacidade de resposta e reduzir a latência por meio do processamento de entrada fora do thread, do teste de ocorrência de entrada fora do thread opcional e da previsão de entrada/saída.

Qualquer aplicativo que usa a Manipulação Direta para processar interações por toque exibe as animações fluidas do Windows 8 e os comportamentos de comentários de interação que estão em conformidade com as Diretrizes de para interações comuns do usuário.

Público-alvo do desenvolvedor

A API de Manipulação Direta é para desenvolvedores experientes que conhecem C/C++, têm uma compreensão sólida dos do COM (modelo de objeto de componente)e estão familiarizados com os conceitos de programação do Windows.

Requisitos de tempo de execução

A Manipulação Direta foi introduzida no Windows 8. Ele está incluído nas versões de 32 bits e 64 bits.

Por que usar DirectManipulation

Lida com interações de maneira simples e consistente

A Manipulação Direta funciona declarando previamente os comportamentos e interações de uma região ou objeto. Por exemplo, uma página da Web geralmente é configurada para pan e zoom. Em runtime, a entrada é associada a essa região/objeto por meio de uma chamada simples à API. Desse ponto em diante, a Manipulação Direta faz todo o trabalho pesado de processamento da entrada, da aplicação de restrições e da personalidade e da geração das transformações de saída.

Criar aplicativos de toque responsivos

Para otimizar a capacidade de resposta e minimizar a latência, o processamento de Manipulação Direta ocorre em um thread independente separado do thread da interface do usuário. Como resultado, as transformações de saída podem ser executadas em paralelo à atividade no thread da interface do usuário. A atividade de thread de interface do usuário pode incluir lógica de aplicativo, renderização, layout e qualquer outra coisa que consuma ciclos no processador.

Flexibilidade de implementação

As interfaces incluídas na Manipulação Direta fornecem suporte abrangente para tratamento de entrada, reconhecimento de interação, notificações de comentários e atualizações de interface do usuário. As interfaces também incorporam serviços do sistema, como DirectComposition.

Conceitos básicos

A implementação de Manipulação Direta mais básica consiste em um de visor, de conteúdo e interações . O do visor é uma região que é capaz de receber e processar a entrada de interações do usuário. É também a região do conteúdo que está visível para o usuário final. O conteúdo é o objeto real que os usuários finais podem ver e é o que move ou dimensiona em resposta a uma interação do usuário. As interações do usuário principal (também conhecidas como manipulações ) compatíveis com a Manipulação Direta são movimento panorâmico e zoom. Essas interações aplicam uma transformação de tradução ou escala ao conteúdo dentro do visor, respectivamente. Vários visores (cada um com seu próprio conteúdo) podem ser configurados em uma única janela para criar uma experiência avançada de interface do usuário.

Essa figura mostra uma implementação básica de Manipulação Direta antes e depois do movimento panorâmico.

implementação básica de manipulação direta antes e depois do movimento panorâmico.

Durante a inicialização da Manipulação Direta, um objeto DCompDirectManipulationCompositor é instanciado e está associado à Manipulação Direta. Esse objeto é um wrapper em torno DirectComposition, que é o compositor do sistema. O objeto é responsável por aplicar as transformações de saída e conduzir atualizações visuais.

Um contato representa um ponto de toque identificado pelo pointerId fornecido na mensagem WM/_POINTERDOWN. Quando uma mensagem de WM_POINTERDOWN é recebida, o aplicativo chama SetContact. O aplicativo notifica a Manipulação Direta sobre os contatos que devem ser tratados e os visores que devem reagir a esses contatos. A entrada de teclado e mouse tem valores especiais de pointerId para que possam ser tratados adequadamente pela Manipulação Direta.

Em nosso caso básico acima, quando SetContact é chamado, algumas coisas acontecem:

  • Quando o usuário executa um painel, uma mensagem WM/_POINTERCAPTURECHANGED é enviada ao aplicativo para notificar que o contato foi consumido pela Manipulação Direta.
  • Quando o usuário move as movimentações, o visor aciona eventos de atualização que são usados pelo DirectComposition wrapper para conduzir atualizações visuais para a tela. Para um usuário que faz movimento panorâmico em um visor, o conteúdo parecerá mover-se suavemente sob o contato.
  • Quando o usuário levanta o contato, o usuário vê o conteúdo continuar se movendo à medida que faz a transição para uma animação de inércia, desacelerando gradualmente até chegar ao local de descanso final.

Processamento de entrada de teclado e mouse

A Manipulação Direta permite que mensagens de teclado e mouse sejam encaminhadas manualmente do thread da interface do usuário do aplicativo por meio da APIProcessInput para que possam ser tratadas adequadamente pela Manipulação Direta.

DirectManipulation e o HWND

A Manipulação Direta está associada a um HWND win32 para receber e processar mensagens de entrada de ponteiro para essa janela. À medida que a Manipulação Direta computa valores de saída, ela faz retornos de chamada assíncronos para o COM (Direct Manipulation Component Object Model) objetos que são implementados no aplicativo. Esses retornos de chamada informam ao aplicativo sobre a transformação que foi aplicada aos objetos. A Manipulação Direta é ativada no HWND especificado chamando Ativar.

Documentação de suporte