Manipulações e visão geral da inércia
Manipulações permitem aos usuários mover, girar e redimensionar os elementos de interface (UI) do usuário usando manipulators. Um manipulator representa um mouse ou (em um cenário sensíveis ao toque) uma caneta ou um dedo.
Inércia emula o comportamento do mundo real para os elementos de interface do usuário que estão em movimento, simulando a força de atrito nos elementos. Isso permite que os elementos diminuir gradualmente a sua movimentação (linear e angular) antes de entrar para uma parada. Este artigo fornece uma introdução ao manipulações e inércia para o.NET Framework.
Manipulações
Uma manipulação trata de uma coleção de manipulators como um objeto composto. Um aplicativo pode controlar as alterações para o objeto de composição em vez dos componentes individuais.
Considere a imagem na ilustração a seguir. Um usuário pode usar dois manipulators para mover, girar e dimensionar a imagem. As alterações para cada manipulator são interpretadas juntamente com os outros manipulators.
Por exemplo, se você tem dois manipulators (1 e 2) na imagem e mover o manipulator 1 em um + Y direção (para baixo), a alteração da imagem depende o que acontece com manipulator 2. Se manipulator 2 também se move na + Y direção (para baixo), a imagem simplesmente move a + direção Y. Mas se manipulator 2 não é alterado, ou ele move em direção -Y (para cima), a imagem é composta de menores ou girada.
Uma imagem que está sendo manipulada por dois manipulators
Manipulação de processamento oferece uma estrutura que monitora um subconjunto de manipulators e as interpreta como se eles estão agindo em conjunto, em vez de forma independente. Você pode criar várias manipulação processador objetos simultaneamente, uma para cada elemento de interface do usuário sejam manipulados em um aplicativo. Um processador de manipulação é informado de que os dispositivos para observar de entrada e relata manipulações por meio de .NET eventos.
Um processador de manipulação não tem informações sobre o elemento específico que está sendo manipulado. Separadamente, um aplicativo aplica as alterações a um elemento específico do aplicativo. Por exemplo, um aplicativo aplica transformações a uma imagem ou redesenha a exibi-lo ao seu novo local ou com um novo tamanho ou orientação.
Manipulações são projetadas para bidimensionais (2D) transformações afim. Essas transformações incluem traduzir, girar e dimensionar.
Partes de uma manipulação
Uma manipulação é uma coleção de Manipulator2D objetos. Essa manipulação agregada é representada por um ponto de origem e uma elipse. O ponto de origem é a posição média de todos os manipulators que está manipulando um elemento. Elipse possui um raio de é a distância média de origem para cada um de Manipulator2D objetos.
Especificam uma manipulação de dois manipulators (1 e 2), uma origem e uma elipse
À medida que os manipulators são adicionados, movidos ou removidos de um elemento de interface do usuário, um aplicativo atualiza o ManipulationProcessor2D objeto chamando o ProcessManipulators() método. Quando o primeiro começa a manipulação, o Started evento é gerado.
Observação
O processamento de manipulação é mais eficaz quando usada em um ambiente de atualização baseada no quadro.Ao usar a manipulação de processamento em um aplicativo do Microsoft XNA, isso não é uma preocupação porque o XNA framework fornece atualizações baseadas no quadro usando a Game.Update método.Em outro ambiente (como WinForms), talvez você precise fornecer sua própria lógica baseada no quadro manipulações de coletar e enviar-lhes periodicamente o ProcessManipulators() o método como um lote.
Como o número de manipulators ou alterar sua posição, o Delta evento é gerado. Propriedades da Manipulation2DDeltaEventArgs o objeto que é passado para o Delta manipulador de eventos especificar alterações na origem, escala, rotação e tradução que ocorreram desde o último evento. A origem da manipulação de alterações ao mover de manipulators e manipulators são adicionados ou removidos. Os valores de tradução especificam quanto a manipulação inclui a movimentação x ou Y.
Um aplicativo usando os novos valores, redesenha o elemento de interface do usuário.
Manipulator 1 move e faz com que a origem alterar
Quando o último manipulator que está associado com a manipulação é removido da ManipulationProcessor2D o objeto, o Completed evento é gerado.
O modelo de processamento de manipulação
Um processador de manipulação usa um modelo de uso direto. Com esse modelo simple, um aplicativo deve passar detalhes de qualquer evento de entrada para o processador de manipulação. Um evento de entrada pode ser gerado por qualquer entrada primitiva, como, por exemplo, um dispositivo de mouse, caneta ou dedo. Esse processo fornece um mecanismo de filtragem direto e quando for necessário de eventos de entrada de um modelo de uso simples, para que o aplicativo pode em lote.
Para um aplicativo incluir uma primitiva de entrada no processo de manipulação, ele cria um Manipulator2D a estrutura dos detalhes da entrada primitiva e passa a estrutura para o processador de manipulação usando o ProcessManipulators() método. O processador de manipulação e dispara eventos, o aplicativo deve manipular para atualizar o componente visual, de maneira apropriada.
O modelo de processamento de manipulação
Inércia
O processador inércia permite que aplicativos extrapolar o local, orientação e outras propriedades de um elemento de interface do usuário, simulando o comportamento do mundo real.
Por exemplo, quando um elemento de movimentos de um usuário, ele pode continuar movendo desaceleram e parar lentamente. O processador inércia implementa esse comportamento, fazendo com que os valores de 2-D afim (origem, escala, conversão e rotação) para alterar o tempo especificado em uma taxa de desaceleração especificado.
Como com o processamento de manipulação, um processador inércia não tem informações sobre um determinado elemento de interface do usuário. Em resposta a eventos que são gerados em um InertiaProcessor2D o objeto, um aplicativo separadamente aplica as alterações para um elemento específico do aplicativo.
Processamento de manipulação e inércia são freqüentemente usados juntos. Suas interfaces são semelhantes, e os eventos que eles geram são (em alguns casos) idênticas. Em geral, o processamento da inércia começa quando a manipulação do elemento de interface do usuário for concluída. Isso é conseguido ouvir o Completed de eventos e iniciando a inércia processamento a partir desse manipulador de eventos.