Datos de entrada de lápiz

Una vez recopilada la entrada de lápiz, las aplicaciones pueden administrar, manipular o transferir esos datos a otros medios. Las acciones de selección, copia, movimiento, guardado, visualización y modificación de la entrada de lápiz tienen lugar en el objeto Ink y sus miembros contenidos, como la colección Strokes y los objetos Stroke .

Nota

Con Real-Time lápiz óptico, las aplicaciones pueden optar por mantener los datos en su propio formato (como guardar trazos).

 

Entrada de lápiz, trazos y paquetes

Un objeto Ink es el tipo de datos fundamental que administra, manipula y almacena la entrada recopilada del objeto InkCollector . Un objeto Ink contiene uno o varios objetos Stroke y métodos y propiedades comunes para administrar y manipular esos trazos. Un trazo se define como el conjunto de datos que se capturan en una sola secuencia de pen-down, pen-move y pen-up. Los datos de trazo contienen una colección de paquetes. Un paquete es el conjunto de datos que envía el dispositivo de tableta en cada punto de ejemplo. Estos datos contienen información como coordenadas, presión de lápiz, ángulo de lápiz y cualquier otra cosa que el hardware pueda transmitir. La propiedad PacketDescription del objeto Stroke describe los paquetes que genera una tableta .

Trazos

Puede obtener una instantánea de los trazos en un objeto Ink mediante la propiedad Strokes del objeto Ink. La propiedad Strokes es una colección de referencias a los trazos del objeto Ink en el momento en que se lee la propiedad Strokes . Si los trazos se agregan o eliminan posteriormente del objeto Ink , no se actualiza una colección Strokes obtenida previamente. Además, la propiedad Strokes es un valor y, como cualquier valor, sale del ámbito a menos que se asigne a una variable.

Para mantener una propiedad Strokes sincronizada con un objeto Ink , envolverla en un controlador de eventos para los eventos StrokesAdded y StrokesRemoved en la colección Strokes . El controlador debe obtener una nueva copia de la propiedad Strokes cuando se desencadena cualquiera de los eventos. Tenga cuidado de no agregar el controlador de eventos a una colección Strokes que está fuera del ámbito antes de que se desencadene el evento.

Observe en este ejemplo que theAddedStrokesIDs se actualiza con una nueva copia de la propiedad strokes en el StrokesAdded_Event controlador.

public void StrokesAdded_Event(object sender, StrokesEventArgs e)
{
    int [] theAddedStrokesIDs = e.StrokeIds;
    theListBox.Items.Clear();
    foreach (int i in theAddedStrokesIDs)
    {
        theListBox.Items.Add("Added Stroke ID: " + i.ToString());
    }
}

PacketDescription (propiedad)

La propiedad PacketDescription del objeto Ink define el conjunto de información de cada paquete que la aplicación obtiene de un dispositivo Tablet PC. La información normalmente incluye coordenadas, pero puede incluir información mucho más detallada (dependiendo de las funcionalidades del digitalizador tablet PC), como presión de lápiz o ángulo de lápiz. Al establecer descripciones de paquetes en el objeto InkCollector o InkOverlay antes de que se recopile cualquier entrada de lápiz (mediante la propiedad DesiredPacketDescription), tiene control total sobre las propiedades de los dispositivos tablet PC que desea recibir.

Propiedades extendidas

Las propiedades extendidas proporcionan un mecanismo para adjuntar datos definidos por la aplicación a Ink y otros objetos. Para obtener más información sobre las propiedades extendidas, vea la colección ExtendedProperties .

Representación de lápiz

El objeto Renderer es responsable de representar Ink. Dado un contexto de tableta adecuado, el objeto Renderer puede asignar coordenadas de espacio de tinta a píxeles, aplicar transformaciones de vista y mostrar tinta en pantallas e impresoras. Los métodos Draw yDrawStroke son los métodos principales para representar la entrada de lápiz. Para obtener más información sobre cómo mostrar la entrada de lápiz en una ventana, vea el objeto Renderer .

Cúspides

Normalmente, un trazo comienza cuando el lápiz se reduce a la superficie de dibujo y termina cuando se eleva el lápiz. Dentro de un trazo, los picos, los ángulos y los cambios radicales de dirección se denominan cusps. Los puntos de conexión de un trazo también se consideran cusps. Por ejemplo, la letra mayúscula "L" tiene tres cups, una en el medio y otra en cada extremo.

A medida que se introduce un trazo, normalmente se suaviza y se representa mediante una curva Bezier (o polilínea). Las curvas Bezier pueden convertir cusps en bucles pequeños. Por ejemplo, el pico de la letra cursiva "i" podría suavizarse para parecerse al "e" cursivo. Para evitar esto, los representadores de Microsoft tienen una fase "pre-Bezier" que controla las cusps de forma diferente.

Las cusps también se pueden usar para subdividir objetos Stroke en unidades borrables. Por ejemplo, seleccionar el lado vertical de una "L" mayúscula podría indicar que se borraba solo ese lado. La parte del trazo que se va a borrar sería la parte entre dos cusps.