Dados de tinta
Depois que a tinta é coletada, os aplicativos podem gerenciar, manipular e/ou transferir esses dados para outras mídias. As ações de selecionar, copiar, mover, salvar, visualizar e alterar a tinta ocorrem no objeto Ink e seus membros contidos, como a coleção Strokes e objetos Stroke.
Observação
Usando Real-Time Stylus, os aplicativos podem optar por manter os dados em seu próprio formato (como salvar traçados).
Tinta, traços e pacotes
Um objeto Ink é o tipo de dados fundamental que gerencia, manipula e armazena a entrada coletada do objeto InkCollector. Um objeto Ink contém um ou mais objetos Stroke e métodos e propriedades comuns para gerenciar e manipular esses traçados. Um traçado é definido como o conjunto de dados que é capturado em uma única sequência de caneta para baixo, movimento de caneta e caneta para cima. Os dados de traçado contêm uma coleção de pacotes. Um pacote é o conjunto de dados que o dispositivo tablet envia em cada ponto de amostragem. Esses dados contêm informações como coordenadas, pressão da caneta, ângulo da caneta e qualquer outra coisa que o hardware possa transmitir. A propriedade PacketDescription do objeto Stroke descreve os pacotes que umTabletgera.
Golpes
Você pode obter um instantâneo dos traçados em um objeto Ink usando a propriedade Strokes do Ink do objeto. A propriedade Strokes é uma coleção de referências aos traçados no objeto Ink no momento em que a propriedade Strokes é lida. Se os traçados forem posteriormente adicionados ou excluídos do objeto Ink, uma coleção deStrokesobtida anteriormente não será atualizada. Além disso, a propriedade Strokes é um valor e, como qualquer valor, sai do escopo, a menos que seja atribuída a uma variável.
Para manter uma propriedadeStrokes sincronizada com um objetoInk, envolva-a em um manipulador de eventos para os eventos StrokesAdded e StrokesRemoved na coleção Strokes. O manipulador deve obter uma nova cópia da propriedade Strokes quando qualquer evento for acionado. Tenha cuidado para não adicionar o manipulador de eventos a uma coleção de Strokes que esteja fora do escopo antes que o evento seja acionado.
Observe neste exemplo que theAddedStrokesIDs
é atualizado com uma nova cópia da propriedade strokes no manipulador de StrokesAdded_Event
.
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());
}
}
Propriedade PacketDescription
A propriedade PacketDescription do objeto Ink define o conjunto de informações em cada pacote que o aplicativo obtém de um dispositivo Tablet PC. As informações geralmente incluem coordenadas, mas podem incluir informações muito mais detalhadas (dependendo de quais são os recursos do digitalizador do Tablet PC), como pressão da caneta ou ângulo da caneta. Ao definir descrições de pacotes no InkCollector ou objeto InkOverlay antes de qualquer tinta ser coletada (usando a propriedade DesiredPacketDescription), você tem controle total sobre quais das propriedades dos dispositivos Tablet PC deseja receber.
Propriedades estendidas
As propriedades estendidas fornecem um mecanismo para anexar dados definidos pelo aplicativo ao de tinta e outros objetos. Para obter mais informações sobre propriedades estendidas, consulte a coleçãoExtendedProperties.
Renderização de tinta
O objetoRenderer é responsável pela renderização Ink. Dado um contexto de tablet apropriado, o objeto Renderizador de pode mapear coordenadas de espaço de tinta para pixels, aplicar transformações de exibição e exibir tinta em telas e impressoras. Os métodos Draw e DrawStroke são os principais métodos para renderizar tinta. Para obter mais informações sobre como exibir tinta em uma janela, consulte o objeto Renderer.
Cúspides
Um traço normalmente começa quando a caneta é abaixada para a superfície de desenho e termina quando a caneta é levantada. Dentro de um curso, os picos, ângulos e mudanças radicais de direção são chamados de cúspides. Os objetivos de um AVC também são considerados cúspides. Por exemplo, a letra maiúscula "L" tem três cúspides, uma no meio e uma em cada extremidade.
À medida que um traçado é inserido, ele é normalmente suavizado e renderizado usando uma curva de Bezier (ou polilinha). As curvas de Bezier podem transformar cúspides em pequenos laços. Por exemplo, o pico da letra cursiva "i" pode ser suavizado para se assemelhar ao cursivo "e". Para evitar isso, os renderizadores da Microsoft têm uma fase "pré-Bezier" que lida com as cúspides de forma diferente.
As cúspides também podem ser usadas para subdividir objetos Stroke em unidades apagáveis. Por exemplo, selecionar o lado vertical de um "L" maiúsculo pode indicar apagar apenas esse lado. A parte do traço a ser apagada seria a parte entre duas cúspides.