Windows Touch Scratchpad mit dem Real-Time Stylus Sample (C#)
Das Windows Touch Scratchpad-Beispiel (MTScratchpadRTStylus) zeigt, wie Sie Windows Touch-Nachrichten verwenden, um Ablaufverfolgungen der Touchpunkte in ein Fenster zu zeichnen. Die Spur des primären Fingers, der zuerst auf den Digitalisierer gelegt wurde, wird schwarz gezeichnet. Sekundäre Finger werden in sechs anderen Farben gezeichnet: Rot, Grün, Blau, Cyan, Magenta und Gelb. Der folgende Screenshot zeigt, wie die Anwendung während der Ausführung aussehen könnte.
Für dieses Beispiel wird das Real-Time Stylus-Objekt (RTS) erstellt, und die Unterstützung für mehrere Kontaktpunkte ist aktiviert. Zum Rendern von Inhalten wird dem RTS ein DynamicRenderer-Plug-In hinzugefügt. Ein Plug-In, EventHandlerPlugIn, wird implementiert, um die Anzahl der Finger nachzuverfolgen und die Farbe zu ändern, die der dynamische Renderer zeichnet. Mit beiden Plug-Ins im RTS-Plug-In-Stapel rendert die Windows Touch Scratchpad-Anwendung den primären Kontakt in Schwarz und die restlichen Kontakte in den verschiedenen Farben.
Der folgende Code zeigt, wie EventHandlerPlugIn die Anzahl der Kontakte erhöht und verringert und die Farbe des dynamischen Renderers festlegt.
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
}
Der folgende Code zeigt, wie der RTS mit Unterstützung mehrerer Kontaktpunkte erstellt wird.
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;
}
Nachdem sich die Farbe des DynamicRenderer-Objekts geändert und Striche gezeichnet wurden, werden die neuen Striche durch einen Aufruf von DynamicRenderer::Refresh angezeigt. Der folgende Code zeigt, wie dies in der OnPaintHandler-Methode ausgeführt wird.
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();
}
Zugehörige Themen
Multitouch Scratchpad-Anwendung (RTS/C#),Multitouch Scratchpad-Anwendung (RTS/C++),Windows-Touch-Beispiele