![clip_image002[6] clip_image002[6]](http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image0026_5F00_thumb_5F00_04B6B60A.jpg)
En esta entrada se centrará la atención en la clase “GestureEventArgs” que es utilizada como argumento en su definición por los eventos de la clase “GestureHandler”. Adicionalmente se mencionarán los atributos “LastBeginEvent” y “LastEvent” que son instancias de la clase inicialmente mencionada.
GestureEventArgs
![clip_image004[6] clip_image004[6]](http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image0046_5F00_thumb_5F00_0A2526AE.jpg)
Estructura de “GestureEventsArgs”
“GestureEventArgs”deriva de la clase “EventArgs” que contiene un conjunto de propiedades muy interesantes que se procederán a describir:
-
Bool IsInertia:
Indica si el gesto transmitido al objeto ha dado lugar a inercia, de esa forma se haría uso de la velocidad de desplazamiento, para mover el objeto sin intervención del usuario de la aplicación.
Una vez definidos y localizados los atributos de la clase, se continuará describiendo las dos grandes funciones de “GestureEventArgs”: la función constructor y la función de decodificación de gestos.
Constructor:
//Aquí se almacena la información del gesto
internal GestureEventArgs(GestureHandler handler, ref GESTUREINFO gestureInfo)
{
_dwFlags = gestureInfo.dwFlags;
GestureId = gestureInfo.dwID;
GestureArguments = gestureInfo.ullArguments;
//Obtiene el último evento para el manejador
LastEvent = handler.LastEvent;
//Obtiene el primer evento lanzado por el último gesto realizado.
LastBeginEvent = handler.LastBeginEvent;
DecodeGesture(handler.HWndWrapper, ref gestureInfo);
// Cuando se realice un nuevo gesto, se borran los valores
// de LastBeginEvent y LastEvent
if (IsBegin)
{
LastBeginEvent = null;
LastEvent = null;
}
}
Decodificador de gestos:
private void DecodeGesture(IHwndWrapper hWndWrapper, ref GESTUREINFO gestureInfo)
{
// Localización del gesto sobre la pantalla.
Location = hWndWrapper.PointToClient(
new Point(gestureInfo.ptsLocation.x, gestureInfo.ptsLocation.y));
Center = Location;
// Según el identificador de gestos se llenan los campos con los valores corespondientes
switch (GestureId)
{
case User32.GID_ROTATE:
// Se realiza el evento de rotación, utilizando la función específica de User32
ushort lastArguments = (ushort)(IsBegin ? 0 : LastEvent.GestureArguments);
RotateAngle = User32.GID_ROTATE_ANGLE_FROM_ARGUMENT(
(ushort)(gestureInfo.ullArguments - lastArguments));
break;
case User32.GID_ZOOM:
// Se guarda el valor de la nueva escala a la que se va a dibujar la figura
Point first = IsBegin ? Location : LastBeginEvent.Location;
Center = new Point((Location.X + first.X) / 2, (Location.Y + first.Y) / 2);
ZoomFactor = IsBegin ? 1 :
(double)gestureInfo.ullArguments / LastEvent.GestureArguments;
break;
case User32.GID_PAN:
// Se establece la velocidad de movimiento del objeto al hacer el efecto Panning
PanTranslation = IsBegin ?
new Size(0, 0) :
new Size(Location.X - LastEvent.Location.X,
Location.Y - LastEvent.Location.Y);
int panVelocity = User32.HiDWord((long)(gestureInfo.ullArguments));
PanVelocity = new Size(User32.LoWord(panVelocity), User32.HiWord(panVelocity));
break;
}
}
}
En la próxima entrada, y para finalizar la serie de forma apropiada, se va a mostrar todo lo descrito en la misma y en pleno funcionamiento para tener de esta manera una visión completa del trabajo del proyecto “mtGesture” proporcionado por Microsoft, como vía de introducción al mundo del desarrollo de aplicaciones para dispositivos tablet con MS Windows 7 Multitouch.
Para acabar, recuerda que si quieres aprender mucho más sobre los secretos de los sistemas Microsoft Windows, te recomendamos leer el libro de Sergio de los Santos "Máxima Seguridad en Windows: Secretos Técnicos" , o siempre puedes suscribirte al Canal RSS de Windows Técnico para estar al día de las novedades e información técnica de interés.
-------------------------------------------------------------------------------------------------------------------------------------------
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 (IV de IV) Anexo I
Desarrollo de aplicaciones con MS Windows 7 Multitouch: Manejador de Gestos (IV de IV) Anexo II
-------------------------------------------------------------------------------------------------------------------------------------------
Enviado
jul 27 2011, 02:13
por
Jhonattan Fiestas