Toque de apoyo en WPF
Este post es una ligera modificación del tacto y la manipulación de MSDN, como una visión general y una referencia para mí en el apoyo toque WPF.
Información general
Nuevo hardware y API en el sistema operativo Windows 7 proporciona aplicaciones la capacidad de recibir información de varios toques simultáneamente. WPF permite a las aplicaciones para detectar y responder al tacto de una manera similar a la respuesta a la entrada de otros, como el ratón o el teclado, provocando eventos cuando se produce contacto.
WPF expone dos tipos de eventos cuando se produce contacto: eventos de toque y eventos de manipulación. Eventos táctiles proporcionan datos exactos sobre cada dedo en una pantalla táctil y su movimiento. Eventos manipulación de interpretar la entrada como ciertas acciones.
Requisitos previos
Necesita los componentes siguientes para desarrollar una aplicación que responde al tacto.
- Microsoft Visual Studio 2010.
- Windows 7.
- Un dispositivo, como una pantalla táctil, compatible con Windows Touch.
WPF expone dos tipos de eventos cuando se produce contacto: eventos de toque y eventos de manipulación. Eventos táctiles proporcionan datos exactos sobre cada dedo en una pantalla táctil y su movimiento. Eventos manipulación de interpretar la entrada como ciertas acciones.
Terminología
Los siguientes términos se utilizan cuando toque se discute.
- El tacto es un tipo de entrada de usuario que es reconocido por Windows 7. Por lo general, el tacto se inicia al introducir los dedos en una pantalla sensible al tacto. Tenga en cuenta que los dispositivos tales como una pantalla táctil que es común en los ordenadores portátiles no son compatibles con el dispositivo táctil si simplemente convierte la posición de los dedos y el movimiento como la entrada del ratón.
- Multitouch es el toque que se produce a partir de más de un punto al mismo tiempo. Windows 7 y WPF admite multitouch. Cada vez que toque se explica en la documentación de WPF, los conceptos se aplican a multitouch.
- Una manipulación se produce cuando el contacto se interpreta como una acción física que se aplica a un objeto. En WPF, los eventos de entrada de la manipulación de interpretar como una traducción, la expansión o la manipulación de rotación.
- Un dispositivo táctil representa un dispositivo que produce la entrada táctil, como un solo dedo en una pantalla táctil.
Los controles que responden al tacto
Los siguientes controles se pueden desplazar arrastrando un dedo sobre el control si tiene contenido que está fuera de la vista.
- El ScrollViewer define el ScrollViewer.PanningMode bienes embargados que le permite especificar si se habilita panorámica táctil horizontal, vertical, ambas o ninguna. El ScrollViewer.PanningDeceleration propiedad especifica con qué rapidez el desplazamiento se ralentiza cuando el usuario levanta el dedo de la pantalla táctil. El ScrollViewer.PanningRatio bienes embargados especifica la relación de desplazamiento de compensación para traducir la manipulación de desplazamiento.
Diagrama de clases
A continuación diagrama de clases se destacan las clases principales y sus miembros para apoyar contacto:
- Contacto
- Eventos táctiles están expuestos tanto por UIElement , UIElement3D y ContentElement como eventos de propagación, y por medio de tacto . FrameReported como un evento de nivel de aplicación (para que sean compatibles con Silverlight).
- Mientras que los eventos aterrizar, mover y hasta son túneles y burbujeante, toque entrar y salir de los eventos están saliendo solo.
- Captura táctil del dispositivo es explícito a través de UIElement . CaptureTouch método.
- Eventos de toque son sincrónicos.
- Eventos de toque se queman, si los eventos de manipulación son despedidos o no.
- WPF admite multitouch.
- Manipulación
- Eventos de manipulación son expuestas por UIElement como la propagación de eventos solamente.
- Eventos manipulación se disparó a un UIElement sólo su IsManipulationEnabled es cierto.
- Eventos de manipulación son sincrónicos.
- WPF admite tres tipos de manipulación: la expansión y la rotación (rotación solo dedo con punto de giro), y la inercia.
- Captura táctil del dispositivo está implícito con la manipulación.
- Clase estática manipulación contiene métodos para obtener y actualizar los parámetros de la manipulación fuera de controladores de eventos de manipulación. También contiene los métodos para un uso más avanzado de la lógica de la manipulación, como la adición de la adición y la eliminación de los manipuladores.
- WPF admite múltiples gestos.
- WPF no es compatible con gestos, o la manipulación 3D.
- ScrollViewer tiene soporte integrado para la manipulación y la inercia, y se puede personalizar las aplicaciones.
Contacto
Eventos toque
Las clases de base, UIElement , UIElement3D y ContentElement , definir los eventos que se pueden suscribir a lo que su aplicación responda al tacto. Eventos táctiles son útiles cuando la aplicación se interpreta táctil como algo más que la manipulación de un objeto. Por ejemplo, una aplicación que permite a los usuarios dibujar con uno o más dedos que suscribirse a tocar los acontecimientos.
Las tres clases definen los siguientes eventos, que se comportan de manera similar, independientemente de la clase que define.
- TouchDown
- TouchMove
- Retocar
- TouchEnter
- TouchLeave
- PreviewTouchDown
- PreviewTouchMove
- PreviewTouchUp
- GotTouchCapture
- LostTouchCapture
Al igual que los eventos del teclado y el ratón, los eventos de toque son eventos enrutados. Los eventos que comienzan con la vista previa son eventos de túneles y los eventos que empiezan con tacto están saliendo los acontecimientos. Al manejar estos eventos, se puede obtener la posición de la entrada, en relación con cualquier elemento, llamando a la GetTouchPoint o GetIntermediateTouchPoints método.
La ruta de ejecución de eventos de toque
Para comprender la interacción entre los eventos de toque, tenga en cuenta el escenario donde un usuario pone un dedo en un elemento, se mueve el dedo en el elemento, y luego levanta el dedo del elemento. La siguiente ilustración muestra la ejecución de los eventos de burbujas (los eventos de túnel se han omitido por simplicidad).
La siguiente lista describe la secuencia de los acontecimientos en la ilustración anterior. 
El TouchEnter evento ocurre una vez cuando el usuario coloca un dedo sobre el elemento.
El TouchDown evento ocurre una vez.
El TouchMove caso aparece varias veces como el usuario mueve el dedo dentro del elemento.
El Retocar evento ocurre una vez cuando el usuario levanta el dedo del elemento.
El TouchLeave evento ocurre una vez.
Cuando más de dos dedos se utilizan, los acontecimientos se producen para cada dedo.
La manipulación y la inercia
Eventos manipulación
Para los casos en que una aplicación permite al usuario manipular un objeto, el UIElement clase define los eventos de manipulación. A diferencia de los eventos de toque que simplemente informan de la posición del tacto, la manipulación de los hechos reportó el número de la entrada se puede interpretar. Hay tres tipos de manipulaciones, la traducción, la expansión y rotación. La lista siguiente describe cómo invocar los tres tipos de manipulaciones.
Ponga un dedo en un objeto y mover el dedo sobre la pantalla táctil para invocar una manipulación de la traducción. Esto por lo general se mueve el objeto.
Coloque dos dedos sobre un objeto y mover los dedos más cerca o más lejos, aparte el uno del otro para invocar una manipulación de expansión. Esto por lo general cambia el tamaño del objeto.
Coloque dos dedos sobre un objeto y girar los dedos alrededor de la otra para invocar una manipulación de la rotación. Esta gira el objeto.
Más de un tipo de manipulación pueden ocurrir simultáneamente.
Al hacer que los objetos para responder a las manipulaciones, puede hacer que el objeto parece haber inercia. Esto puede hacer que los objetos simulan el mundo físico. Por ejemplo, cuando se presiona un libro sobre una mesa, si se presiona lo suficiente el libro seguirá a moverse después de que lo suelte. WPF permite simular este comportamiento después de la manipulación de eventos de recaudación de los dedos del usuario libera el objeto.
Para obtener información sobre cómo crear una aplicación que permite al usuario mover, redimensionar y rotar un objeto, consulte Tutorial: Creación de la aplicación primer toque .
El UIElement define los eventos de manipulación siguientes.
Por defecto, un UIElement no recibe estos eventos manipulación. Para recibir eventos de manipulación en un UIElement , establezca UIElement.IsManipulationEnabled en true.
La ruta de ejecución de eventos de manipulación
Considere un escenario donde un usuario "tira" un objeto. El usuario pone un dedo sobre el objeto, mueve el dedo por la pantalla táctil para una distancia corta, y luego levanta el dedo mientras se está moviendo. El resultado de esto es que el objeto se mueve en el dedo del usuario y seguir avanzando después de que el usuario levante el dedo.
La siguiente ilustración muestra la ruta de ejecución de eventos de la manipulación y la información importante acerca de cada evento.
Eventos manipulación

La siguiente lista describe la secuencia de los acontecimientos en la ilustración anterior.
El ManipulationStarting evento se produce cuando el usuario coloca un dedo sobre el objeto. Entre otras cosas, este evento le permite configurar el ManipulationContainer propiedad. En los hechos posteriores, la posición de la manipulación será relativa a la ManipulationContainer . En otros eventos que ManipulationStarting , esta propiedad es de sólo lectura, por lo que el ManipulationStarting evento es el único momento en que se puede establecer esta propiedad.
El ManipulationStarted evento próximo. Este evento informa el origen de la manipulación.
El ManipulationDelta caso aparece varias veces en los dedos de un usuario pasar de una pantalla táctil. El DeltaManipulation propiedad de la ManipulationDeltaEventArgs clase informa de si la manipulación se interpreta como el movimiento, la expansión, o la traducción. Aquí es donde se realizan la mayor parte de los trabajos de manipulación de un objeto.
El ManipulationInertiaStarting evento se produce cuando los dedos del usuario pierda el contacto con el objeto. Este evento le permite especificar la desaceleración de las manipulaciones en la inercia. Esto es para que su objeto se puede emular distintos espacios físicos o los atributos si lo desea. Por ejemplo, suponga que la aplicación tiene dos objetos que representan objetos del mundo físico, y es más pesado que el otro. Puede hacer que el objeto más pesado desacelerar más rápido que el objeto más ligero.
El ManipulationDelta caso aparece varias veces la inercia se produce. Tenga en cuenta que este evento se produce cuando los dedos del usuario moverse a través de la pantalla táctil y cuando WPF simula la inercia. En otras palabras, ManipulationDelta ocurre antes y después de la ManipulationInertiaStarting evento. El ManipulationDeltaEventArgs.IsInertial informes de propiedad si la ManipulationDelta evento se produce durante la inercia, para que pueda comprobar que la propiedad y realizar diferentes acciones, dependiendo de su valor.
El ManipulationCompleted evento se produce cuando la manipulación y la inercia de los extremos. Es decir, después de todo el ManipulationDelta eventos, la ManipulationCompleted evento para indicar que la manipulación es total.
Límite Feedback
El UIElement también define el ManipulationBoundaryFeedback evento. Este suceso se produce cuando el ReportBoundaryFeedback método es llamado en la ManipulationDelta evento. El ManipulationBoundaryFeedback evento permite a las aplicaciones o componentes para proporcionar información visual cuando un objeto golpea un límite. Por ejemplo, la ventana de la clase se encarga de la ManipulationBoundaryFeedback caso de que la ventana se mueven ligeramente cuando su borde se encuentra.
Promoción del ratón
Puede cancelar la manipulación llamando al cancelar el método de los argumentos del evento en todo caso, la manipulación, excepto ManipulationBoundaryFeedback evento. Cuando se llama a cancelar , la manipulación de los eventos ya no se levantó y se producen los eventos de ratón para el tacto. La siguiente tabla describe la relación entre el tiempo que se cancela la manipulación y los eventos del ratón que se producen.
Cancelar el caso de que se le llama en | Los eventos del ratón que se producen por la entrada que ya se ha producido |
|---|---|
Los eventos del ratón. | |
Del ratón y los eventos del ratón movimiento. | |
Del ratón, mover el ratón y el ratón hacia arriba eventos. |
Tenga en cuenta que si usted llama a cancelar cuando la manipulación se encuentra en la inercia, el método devuelve false y la entrada no provoca eventos del ratón.
La relación entre el tacto y la manipulación de Eventos
Un UIElement siempre puede recibir eventos de toque. Cuando el IsManipulationEnabled propiedad se establece en true, un UIElement puede recibir el tacto y la manipulación de los acontecimientos. Si el TouchDown caso no se maneja (es decir, el manejado propiedad es false), la lógica de la manipulación de captura el toque al elemento y genera los eventos de manipulación. Si el manejado propiedad se establece en true en el TouchDown caso, la lógica de la manipulación no genera eventos de manipulación. La siguiente ilustración muestra la relación entre los eventos de toque y eventos de manipulación.
El tacto y la manipulación de eventos

La siguiente lista describe la relación entre el tacto y la manipulación de los acontecimientos que se muestra en la ilustración anterior.
Cuando el dispositivo genera un primer contacto TouchDown evento en un UIElement , la lógica de la manipulación de las llamadas de la CaptureTouch método, lo que genera la GotTouchCapture evento.
Cuando el GotTouchCapture ocurre, la lógica de la manipulación de las llamadas de la Manipulation.AddManipulator método, lo que genera la ManipulationStarting evento.
Cuando el TouchMove eventos, la lógica de la manipulación genera la ManipulationDelta eventos que ocurren antes del ManipulationInertiaStarting evento.
Cuando el dispositivo de contacto por última vez el elemento plantea la Retocar caso, la lógica de la manipulación genera la ManipulationInertiaStarting evento.
EventArgs diagrama de clases
A continuación diagrama de clases muestra todas las toque y las clases EventArgs la manipulación y los tipos pertinentes.








Comentarios recientes