Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos. Anexo I

Windows Técnico

Sindicación

Proximos HOLs

Loading...

clip_image002[4]

La presente entrada es la primera de los tres anexos incluidos dentro de la serie “Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos”, con los que se pretende conocer a fondo el funcionamiento del proyecto “mtGesture” proporcionado como ejemplo por  Microsoft para todos aquellos desarrolladores que deseen ingresar en el mundo de la programación para dispositivos tablet Multitouch.

 

Lo siguiente a comentar dentro de la clase “GestureHandler” son sus dos atributos que son:

  • LastBeginEvent

    Este atributo va relacionado al evento que se lanza con el gesto realizado actualmente, de esta forma podrá guardarse dicho evento para posteriores operaciones.

   internal GestureEventArgs LastBeginEvent

   {

      get; set;

   }

  • LastEvent

     El último evento en la secuencia actual de eventos de gesto.

       

         internal GestureEventArgs LastEvent

         {

             get; set;

         }

 

Como se puede ver en el código, ambos atributos son objetos de la clase “GestureEventArgs”  (cuya estructura se describirá en la siguiente entrada de la serie) y son principalmente utilizados en la función ya descrita “WindowProc” que intercepta los mensajes de Windows para el manejador de eventos de gesto.

 

       

Para iniciar la explicación acerca de los eventos de la clase “GestureHandler”, se mostrará una imagen como resumen de la actividad de cada uno.

 

clip_image004[4]

Imagen resumen de los eventos de GestureHandler

 

 

Se puede apreciar claramente que las acciones “Pan”, “Rotate” y “Zoom” de la clase tiene un evento relacionado al inicio del  gesto, otro al gesto en acción y otro diferente relacionado con el fin del gesto, de esta forma se tiene controlado todas las acciones posibles sobre la pantalla. Además de los ya mencionados, se encuentran también los eventos asociados con pulsar la pantalla con dos dedos y el gesto de pasar el cursor o el dedo sobre un elemento, las cuales son eventos que se agregarán a la secuencia de eventos a la hora de realizar un gesto sobre la pantalla del dispositivo táctil.

 

Los eventos descritos en la imagen anterior tienen el común su estructura de código:

 

        public event EventHandler<GestureEventArgs> ”NombreDeEvento

        {

            add

            {

                _eventMap[EventMapID.”NombreDeEvento”] += value;

            }

            remove

            {

                _eventMap[EventMapID. ”NombreDeEvento”] -= value;

            }

        }

 

De esta forma cuando se desee añadir una función a un evento, por ejemplo:

 

Begin” += “funcionA” ;

 

Se añadirá la función al mapa de eventos “_eventmap”, en la posición determinada por EventMapID .”Begin”. 

 

De forma análoga en el caso contrario, por ejemplo:  

 

Begin” -= “funcionA”;

 

Se elimina dicha función del mapa de eventos “_eventmap”.

 

Para saber a lo que refiere EventMapID .”Begin”, sería conveniente ver la estructura  y el código de la clase estática “EventMapID”, la cual se encuentra incluida en  GestureHandler”.

 

   

clip_image005[4]

Estructura de la clase EventMapID

 

 

private static class EventMapID

{

 public static readonly uint Begin = MapWM2EventId(User32.GID_BEGIN, 0);

 public static readonly uint End = MapWM2EventId(User32.GID_END, 0);

 public static readonly uint PanBegin =

                             MapWM2EventId(User32.GID_PAN,User32.GF_BEGIN);

 public static readonly uint Pan = MapWM2EventId(User32.GID_PAN, 0);

 public static readonly uint PanEnd = MapWM2EventId(User32.GID_PAN, User32.GF_END);

 public static readonly uint PressAndTap = MapWM2EventId(User32.GID_PRESSANDTAP, 0);

 public static readonly uint RotateBegin =

  MapWM2EventId(User32.GID_ROTATE, User32.GF_BEGIN);

 public static readonly uint Rotate = MapWM2EventId(User32.GID_ROTATE, 0);

 public static readonly uint RotateEnd =

  MapWM2EventId(User32.GID_ROTATE, User32.GF_END);

 public static readonly uint TwoFingerTap =

  MapWM2EventId(User32.GID_TWOFINGERTAP, 0);

 public static readonly uint ZoomBegin =

  MapWM2EventId(User32.GID_ZOOM, User32.GF_BEGIN);

 public static readonly uint Zoom = MapWM2EventId(User32.GID_ZOOM, 0);

 public static readonly uint ZoomEnd =

  MapWM2EventId(User32.GID_ZOOM, User32.GF_END);

}

 

 

Después de ver el código se puede decir que la clase se encarga de identificar los gestos producidos sobre la pantalla táctil y asignarles un número entero sin signo, siendo dicho numero recogido de los valores de las propiedades de la clase ”User32”, la cual realiza una comunicación directa con las librerías de Windows 7 a través de “Windows7.Multitouch.Interop”.

De esta forma se trabaja más cómodamente con este valor dentro del mapa de eventos “_eventmap”.

 

En el siguiente anexo de la serie, como ya se ha adelantado en líneas anteriores, se entrará en detalle de la clase “GestureEventArgs” que es usado como argumento por todos los eventos de gesto.Esta clase tiene entre sus particularidades algunas referencias a la capacidad “Inertia” descrita en la serie anterior.

 

Por último solo queda recordar que si desea mantenerse informado sobre noticias y acontecimientos de interés relacionado con las tecnologías Microsoft no dudes en suscribirte al canal de RSS de Windows Técnico donde recibirás todas las novedades del sector.

 

 

 

clip_image006[4]

 

-------------------------------------------------------------------------------------------------------------------------------------------

Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos (I de IV)
Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos (II de IV)

Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos (III de IV)

Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos (IV de IV)

Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos. Anexo I

-------------------------------------------------------------------------------------------------------------------------------------------


Enviado jul 22 2011, 11:58 por Jhonattan Fiestas

Comentarios

Windows Técnico escrito Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos.Anexo II
en 07-27-2011 14:36

  En esta entrada se centrará la atención en la clase “ GestureEventArgs ” que es utilizada como

Añadir un comentario

(requerido)  
(opcional)
(requerido)  
Recordarme
If you can't read this number refresh your screen
Enter the numbers above: