Dando continuidad a esta serie de artículos en torno a la programación para Tablets Multitouch con MS Windows 7, abordábamos en la entrada anterior Tablets MultiTouch con MS Windows 7: Inertia (I) el control de la propiedad Inertia disponible para este entorno.
Como ya se reflejaba en el mencionado post, era necesario importar a .Net algunos de los elementos de la librería disponibles de forma nativa en C++ para Windows 7 y relacionados con el control de dispositivos. Siguiendo en esta línea, en la entrada que ahora se inicia se abordará la importación del código de la librería “ManipulationInertiaProcessor.cs”.

Libreria ManipulationInertiaProcessor
Esta librería se va encargar de gestionar la velocidad de lanzamiento de un objeto, de gestionar un marco con las paredes elásticas y conseguir efectos de rebote, determinar los ángulos tanto de choque con las paredes como el ángulo de salida al lanzar el objeto, y sobre todo indicar cuándo se inicia el movimiento y facilitar todos los minúsculos cambios de posición que realiza el objeto en movimiento.
Para poder capturar todas las acciones anteriores, esta librería se encuentra basada en otra denominada “ManipulationProcessor.cs” y que se comentará con mayor detalle en el próximo artículo de la serie. Las llamadas desde una librería a la otra es posible verlas en la misma inicialización, tal y como queda reflejado en las siguientes líneas de código:
internal InertiaProcessor(ManipulationInertiaProcessor processor)
{
_comInertiaProcessor = new ManipulationInterop.InertiaProcessor();
_manipulationProcessor = processor;
_comManipulationEvents = new ManipulationEvents(_comInertiaProcessor, processor as IManipulationEvents);
MaxInertiaSteps = 200;
InertiaTimerInterval = 15;
}
La librería “ManipulationInertiaProcessor.cs”, una vez inicializada, nos ofrece el control de los desplazamientos de los objetos por medio de las funciones “InitialVelocity” para conocer la velocidad de salida del objeto, e “InitialAngularVelocity” que ofrece el ángulo de salida del mismo.
Con estos parámetros es posible determinar cómo se va desplazar el objeto y en función de ello representarlo en la pantalla de la aplicación que se esté generando, además de dotarle del movimiento necesario de forma autónoma.
Pero cuando se lanza un objeto no sólo interesa controlar su velocidad de salida, sino también la desaceleración que va a presentar éste hasta detenerse. Para realizar este cálculo se hará uso de la propiedad “DesiredDeceleration” permitiendo a través de la misma el control de desaceleración.
Con la llamada a estas funciones es posible controlar y simular el lanzamiento de un objeto en nuestra aplicación usando las manos y el dispositivo Tablet con MS Windows 7 para ello.
La última característica que aporta esta librería es la generación de rectángulos con la propiedad adicional de que estos sean elásticos. Esta va a permitir el rebote de los objetos dentro de un marco, y una mayor interactuación del objeto móvil con el entorno donde se encuentra dicho objeto. La propiedad encargada de realizar estas operaciones es “ElasticMargin” . Se incluyen a continuación líneas de código que ilustran esta propiedad:
public RectangleF ElasticMargin
{
get
{
return new RectangleF(
_comInertiaProcessor.ElasticMarginLeft,
_comInertiaProcessor.ElasticMarginTop,
_comInertiaProcessor.ElasticMarginRight - _comInertiaProcessor.ElasticMarginLeft,
_comInertiaProcessor.ElasticMarginBottom - _comInertiaProcessor.ElasticMarginTop);
}
set
{
_comInertiaProcessor.ElasticMarginLeft = value.Left;
_comInertiaProcessor.ElasticMarginRight = value.Right;
_comInertiaProcessor.ElasticMarginTop = value.Top;
_comInertiaProcessor.ElasticMarginBottom = value.Bottom;
}
}
El principal detalle de esta propiedad, es el objeto devuelto por ella, un “RectangleF” que permite pintar un rectángulo a través del objeto devuelto. Los objetos que se sitúen dentro de este marco, es posible hacer que reboten con las paredes del rectángulo retornado, dándole mayor dinamismo a nuestras aplicaciones.
Con la entrada de hoy hemos visto las posibilidades de interactuar con la API de Inertia, en la siguiente entrada profundizaremos en como Ms Windows 7 controla los movimientos de inercia haciendo uso de la librería “ManipulationProcessor.cs”.
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.

Enviado
may 03 2011, 07:31
por
Ignacio Briones