Windows Touch Scratchpad à l’aide de l’exemple de stylet Real-Time (C#)
L’exemple de pavé de travail Windows Touch (MTScratchpadRTStylus) montre comment utiliser des messages Windows Touch pour dessiner des traces des points tactiles vers une fenêtre. La trace du doigt principal, celui qui a été mis en premier sur le numériseur, est dessinée en noir. Les doigts secondaires sont dessinés dans six autres couleurs : rouge, vert, bleu, cyan, magenta et jaune. La capture d’écran suivante montre à quoi l’application peut ressembler lors de l’exécution.
Pour cet exemple, l’objet Real-Time Stylus (RTS) est créé et la prise en charge de plusieurs points de contact est activée. Un plug-in DynamicRenderer est ajouté au rts pour afficher le contenu. Un plug-in, EventHandlerPlugIn, est implémenté pour suivre le nombre de doigts et modifier la couleur que dessine le convertisseur dynamique. Avec les deux plug-ins dans la pile du plug-in RTS, l’application Windows Touch Scratchpad affiche le contact principal en noir et le reste des contacts dans les différentes couleurs.
Le code suivant montre comment EventHandlerPlugIn incrémente et décrémente le nombre de contacts et définit la couleur du convertisseur dynamique.
public void StylusDown(RealTimeStylus sender, StylusDownData data)
{
// Set new stroke color to the DrawingAttributes of the DynamicRenderer
// If there are no fingers down, this is a primary contact
dynamicRenderer.DrawingAttributes.Color = touchColor.GetColor(cntContacts == 0);
++cntContacts; // Increment finger-down counter
}
public void StylusUp(RealTimeStylus sender, StylusUpData data)
{
--cntContacts; // Decrement finger-down counter
}
Le code suivant montre comment le RTS est créé avec la prise en charge de plusieurs points de contact.
private void OnLoadHandler(Object sender, EventArgs e)
{
// Create RealTimeStylus object and enable it for multi-touch
realTimeStylus = new RealTimeStylus(this);
realTimeStylus.MultiTouchEnabled = true;
// Create DynamicRenderer and event handler, and add them to the RTS object as synchronous plugins
dynamicRenderer = new DynamicRenderer(this);
eventHandler = new EventHandlerPlugIn(this.CreateGraphics(), dynamicRenderer);
realTimeStylus.SyncPluginCollection.Add(eventHandler);
realTimeStylus.SyncPluginCollection.Add(dynamicRenderer);
// Enable RTS and DynamicRenderer object, and enable auto-redraw of the DynamicRenderer
realTimeStylus.Enabled = true;
dynamicRenderer.Enabled = true;
dynamicRenderer.EnableDataCache = true;
}
Une fois que la couleur de l’objet DynamicRenderer a changé et que les traits ont été dessinés, un appel à DynamicRenderer::Refresh entraîne l’affichage des nouveaux traits. Le code suivant montre comment cela est effectué dans la méthode OnPaintHandler.
private void OnPaintHandler(object sender, PaintEventArgs e)
{
// Erase the background
Brush brush = new SolidBrush(SystemColors.Window);
e.Graphics.FillRectangle(brush, ClientRectangle);
// Ask DynamicRenderer to redraw itself
dynamicRenderer.Refresh();
}
Rubriques connexes
Application pavé de travail tactile multipoint (RTS/C#),Application Multi-touch Scratchpad (RTS/C++), Exemples Windows Touch