Поделиться через


подключаемые модули Dynamic-Renderer

Подключаемый модуль динамического отрисовщика — это объект, который отображает данные пера планшета в режиме реального времени при обработке объектом RealTimeStylus . Позже для таких событий, как обновление формы, подключаемый модуль динамического отрисовщика или подключаемый модуль сборщика рукописного ввода может перерисовывать рукописный ввод.

Объект DynamicRenderer

Объект RealTimeStylus реализует интерфейс IStylusSyncPlugin . Объект DynamicRenderer отрисовывает рукописный ввод в режиме реального времени по мере его рисования. При вызове метода Refresh при включенном объекте DynamicRenderer объект DynamicRenderer перерисовывает собираемый в данный момент штрих. Свойство Enabled объекта DynamicRenderer изначально имеет значение FALSE.

Примечание

При вызове метода Refresh объекта DynamicRenderer из обработчика событий Paint в управляемом коде задайте для свойства ClipRectangle объекта DynamicRenderer значение свойства ClipRectangle объекта PaintEventArgs.

 

Объект DynamicRenderer может временно кэшировать данные рукописного ввода. Чтобы использовать эту функцию в управляемом коде, задайте для свойства EnableDataCache значение TRUE. Когда объект DynamicRenderer получает вызов метода IStylusSyncPlugin.StylusUp , он кэширует данные росчерка и добавляет пользовательские данные пера в очередь входных данных в ответ на объект StylusUpData для росчерка. Свойству CustomDataId объекта CustomStylusData присваивается значение DynamicRendererCachedDataGuid, а свойство Data объекта CustomStylusData содержит объект DynamicRendererCachedData. Вызовите метод ReleaseCachedData объекта DynamicRenderer после сбора росчерка, который может быть статически отрисован. При вызове метода Refresh при включенном объекте DynamicRenderer объект DynamicRenderer перерисовывает все штрихи, которые кэшируются. Если свойству DataCacheEnabled присвоено значение false, кэшированные данные росчерка удаляются.

На следующей схеме показано, как объект DynamicRenderer добавляет данные в данные пера планшета при установке свойства DataCacheEnabled объекта DynamicRenderer.

Иллюстрация, показывающая поток данных dynamicrenderer

На этой схеме круг с буквой "SD" представляет объект StylusDown , а круги с буквой "P" представляют объекты Packets , которые уже были добавлены в очередь вывода объекта RealTimeStylus и еще не отправлены в асинхронную коллекцию подключаемых модулей. Круг с буквой "SU" представляет объект StylusUp , который в настоящее время обрабатывается объектом RealTimeStylus . Он отправляется в синхронную коллекцию подключаемых модулей, а затем помещается в очередь вывода. Круги с буквой "DR" представляют данные пользовательского пера, которые добавляются во входную очередь подключаемым модулем DynamicRenderer в ответ на уведомление пера вверх, связанное с "SU". Затем данные пользовательского пера с буквой DR передаются синхронным подключаемым модулям, а затем в очередь вывода перед обработкой данных следующего пера планшета. Пустой круг представляет позицию в очереди вывода, в которую добавляются будущие данные пера планшета. На схеме также представлен подключаемый модуль сборщика рукописного ввода, вызывающий метод ReleaseCachedData объекта DynamicRenderer для освобождения кэшированных данных росчерка после того, как подключаемый модуль коллекции рукописного ввода обработает росчерк.

Особые рекомендации

В следующем списке описаны другие моменты, которые следует учитывать при использовании объекта DynamicRenderer .

  • Не следует присоединять объект DynamicRenderer к нескольким объектам RealTimeStylus . После включения двух объектов RealTimeStylus , к которым присоединен объект DynamicRenderer , происходит следующее.

    • Объект DynamicRenderer создает исключение в ответ на второй вызов метода RealTimeStylusEnabled .
    • Второй объект RealTimeStylus , который был включен, создает объект Error и уведомляет остальные подключаемые модули в коллекциях подключаемых модулей об ошибке.
    • Объект DynamicRenderer прекращает отрисовку данных пера планшета.
  • Объект RealTimeStylus создает исключение, когда вызывается его метод AddCustomStylusDataToQueue с параметром GUID , равным глобальному уникальному идентификатору (GUID) DynamicRendererCachedDataGuid.

  • Объект DynamicRenderer реализуется как оболочка модели COM, и вы не можете напрямую вызывать его методы интерфейса IStylusSyncPlugin . Дополнительные сведения об операции COM и объекте RealTimeStylus см. в разделе Примечания к реализации для API StylusInput.

Пользовательская отрисовка

Вы можете создать собственный подключаемый модуль динамического отрисовщика, создав синхронный подключаемый модуль, который подписывается на уведомления StylusDown, Packets и StylusUp . Затем подключаемый модуль может отрисовыть росчерк по мере его рисования. Например, это может быть один из способов реализации инструмента выделения, использующего выделение в свободной форме или поле выделения.