Сенсорная панель Windows с использованием примера пера Real-Time (C#)
В примере сенсорной панели Windows (MTScratchpadRTStylus) показано, как использовать сообщения Windows Touch для рисования трассировок точек касания в окне. След основного пальца, который был помещен на дигитайзер первым, рисуется черным цветом. Вторичные пальцы рисуются в шести других цветах: красный, зеленый, синий, голубой, пурпурный и желтый. На следующем снимке экрана показано, как приложение может выглядеть во время выполнения.
В этом примере создается объект Real-Time Stylus (RTS) и включена поддержка нескольких точек контакта. Подключаемый модуль DynamicRenderer добавляется в RTS для отрисовки содержимого. Реализован подключаемый модуль EventHandlerPlugIn для отслеживания количества пальцев и изменения цвета, который рисует динамический отрисовщик. При использовании обоих подключаемых модулей в стеке подключаемых модулей RTS приложение Windows Touch Scratchpad будет отображать основной контакт черным цветом, а остальные контакты — различными цветами.
В следующем коде показано, как EventHandlerPlugIn увеличивает и уменьшает количество контактов и задает цвет динамического отрисовщика.
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
}
В следующем коде показано, как создается RTS с поддержкой нескольких точек контакта.
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;
}
После изменения цвета объекта DynamicRenderer и рисования штрихов вызов DynamicRenderer::Refresh приведет к отображению новых штрихов. В следующем коде показано, как это выполняется в методе 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();
}
Связанные темы
Мультисенсорное приложение (RTS/C#),мультисенсорное приложение для сенсорной панели (RTS/C++),Примеры сенсорного ввода Windows