Класс InkCollector

Представляет объект, используемый для записи рукописного ввода с доступных планшетных устройств.

Создание элемента управления InkCollector за прозрачным элементом управления (например, GroupBox с набором свойств WS_EX_TRANSPARENT ) не позволит InkCollector собирать рукописный ввод.

InkCollector имеет следующие типы элементов:

События

Класс InkCollector имеет эти события.

Событие Описание
CursorButtonDown Происходит, когда InkCollector обнаруживает кнопку курсора, которая находится вниз.
CursorButtonUp Происходит, когда InkCollector обнаруживает кнопку курсора, которая находится вверх.
CursorDown Происходит, когда подсказка курсора обращается к поверхности планшета с оцифровкой.
CursorInRange Происходит, когда курсор входит в диапазон физического обнаружения (близкое расположение) контекста планшета.
CursorOutOfRange Происходит, когда курсор покидает диапазон физического обнаружения (близкое расположение) контекста планшета.
Doubleclick Происходит при двойном щелчке объекта InkCollector .
Жест Происходит при распознавании жеста конкретного приложения.
MouseDown Происходит при наведении указателя мыши на объект InkCollector и нажатии кнопки мыши.
MouseMove Происходит при перемещении указателя мыши по объекту InkCollector .
MouseUp Происходит при наведении указателя мыши на объект InkCollector и отпускается кнопка мыши.
Mousewheel Происходит при перемещении колесика мыши во время фокуса объекта InkCollector .
NewInAirPackets Происходит при просмотре пакета в воздухе, который происходит, когда пользователь перемещает перо рядом с планшетом, а курсор находится в окне объекта InkCollector или пользователь перемещает мышь в связанном окне объекта InkCollector .
NewPackets Происходит, когда объект InkCollector получает пакеты.
Инсульта Происходит, когда пользователь завершает рисование нового росчерка на любом планшете.
SystemGesture Происходит при распознавании системного жеста.
TabletAdded Происходит при добавлении планшета в систему.
Планшет удален Происходит при удалении планшета из системы.

Интерфейсы

Класс InkCollector определяет эти интерфейсы.

Интерфейс Описание
IInkCollector Этот объект реализует com-интерфейс IInkCollector .

Методы

Класс InkCollector имеет эти методы.

Метод Описание
GetEventInterest Извлекает текущее состояние определенного события объекта InkCollector , то есть, прослушивается ли событие или используется.
GetGestureStatus Возвращает значение, указывая, заинтересован ли объект InkCollector в определенном жесте.
GetWindowInputRectangle Извлекает прямоугольник окна в пикселях, в которых рисуется рукописный ввод.
SetAllTabletsMode Этот режим позволяет объекту InkCollector собирать рукописные фрагменты с любого планшета, подключенного к планшетному компьютеру.
SetEventInterest Изменяет значение, указывающее, следует ли прослушивать или использовать определенное событие.
SetGestureStatus Изменяет интерес объекта InkCollector в известном жесте.
SetSingleTabletIntegratedMode Этот режим позволяет объекту InkCollector собирать рукописные фрагменты только с одного планшета. Рукописные фрагменты других планшетов игнорируются объектом InkCollector .
SetWindowInputRectangle Изменяет прямоугольник окна (в пикселях) для сопоставления рукописного ввода с окном.

Свойства

Класс InkCollector имеет эти свойства.

Свойство Тип доступа Описание
AutoRedraw
Только для чтения
Возвращает или задает значение, указывающее, перерисовывает ли inkCollector рукописный фрагмент, когда окно становится недействительным.
CollectingInk
Только для чтения
Возвращает значение, указывающее, рисуется ли рукописный ввод в объекте InkCollector .
CollectionMode
Только для чтения
Возвращает или задает режим коллекции, определяющий, распознаются ли рукописные фрагменты, жесты или оба они распознаются как пользователь записывает.
Курсоры
Только для чтения
Возвращает коллекцию Cursors , доступную для использования в области рукописного ввода.
DefaultDrawingAttributes
Только для чтения
Возвращает или задает объект InkDrawingAttributes по умолчанию, который задает атрибуты рисования, используемые при рисовании и отображении рукописного ввода.
DesiredPacketDescription
Только для чтения
Возвращает или задает интерес к аспектам пакета, связанного с рукописным вводом, нарисованным в объекте InkCollector .
DynamicRendering
Только для чтения
Возвращает или задает значение, указывающее, отображается ли рукописный ввод по мере рисования.
Включен
Только для чтения
Возвращает или задает значение, указывающее, собирает ли объект InkCollector входные данные пера.
Дескриптор
Только для чтения
Возвращает или задает дескриптор окна, к которому присоединен объект InkCollector .
Рукописный ввод
Только для чтения
Возвращает или задает объект InkDisp , связанный с объектом InkCollector .
MarginX
Только для чтения
Возвращает или задает поля вдоль оси X в пикселях.
MarginY
Только для чтения
Возвращает или задает поля вдоль оси Y в пикселях.
MouseIcon
Только для чтения
Возвращает или задает текущий настраиваемый значок мыши.
MousePointer
Только для чтения
Возвращает или задает значение, указывающее тип указателя мыши, который появляется при наведении указателя мыши на определенную часть объекта.
Обработчик
Только для чтения
Возвращает или задает объект InkRenderer , используемый для рисования рукописного ввода.
SupportHighContrastInk
Только для чтения
Возвращает или задает значение, указывающее, отображается ли рукописный ввод как только один цвет, если система находится в режиме высокой контрастности.
Tablet
Только для чтения
Возвращает планшетное устройство, которое в настоящее время используется объектом InkCollector для сбора входных данных.

Remarks

Этот объект можно создать, вызвав метод CoCreateInstance в C++.

Объект InkCollector собирает только рукописные и жесты, которые являются входными данными в определенное окно, с которым он связан. Единственной целью InkCollector является сбор рукописного ввода с оборудования (например, с помощью объекта IInkCursor и IInkTablet ) и его доставки в приложение. По сути, он выступает в качестве источника, который распределяет рукописный ввод в один или несколько различных объектов InkDisp , которые действуют в качестве контейнера, в котором хранятся распределенные рукописные фрагменты.

Чтобы использовать InkCollector, создайте его, сообщите ему, в каком окне нужно собрать рукописный ввод и включить его. После включения его можно настроить сбор только в одном из трех режимов (режим указывается в перечислении InkCollectionMode ):

  • InkOnly, в котором создается объект IInkStrokeDisp .
  • GestureOnly, в котором создается объект IInkGesture .
  • InkAndGesture, в котором создается росчерк, жест или потенциально оба, в зависимости от того, как приложение обрабатывает события.

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

InkCollector обрабатывает все входные данные планшета. Рукописный ввод можно собирать из всех подключенных планшетов (включая мышь) одновременно. Изменения в объектах IInkCursor и IInkCursorButton могут вызвать срабатывание события в объекте InkCollector .

InkCollector также управляет списком курсоров, с которыми он сталкивается во время его существования. Когда InkCollector обнаруживает новый курсор, событие CursorInRange срабатывает с параметром newCursor, установленным равным VARIANT_TRUE. Приложения используют InkCollector для управления новыми курсорами.

Несколько объектов InkCollector могут быть связаны с определенным дескриптором окна, даже если их области коллекции, заданные в конструкторе или методе SetWindowInputRectangle , перекрываются. Однако единственный способ работы этого сценария заключается в том, что каждый inkCollector вызывает SetSingleTabletIntegratedMode и использует уникальный планшет. Такое поведение упрощает хранение рукописного ввода в отдельном объекте для каждого планшета.

Ошибка возникает, если входной прямоугольник окна одного из включенных inkCollectors (набор с включенным свойством ) перекрывает прямоугольник ввода окна другого включенного InkCollector.

Примечание

Перекрытие может происходить без ошибки, если в любое время включен только один из входных прямоугольников.

События MouseDown, MouseMove, MouseUp и MouseWheel возвращают координаты x и y в пикселях, а не единицы HIMETRIC, связанные с пространством рукописного ввода. Это связано с тем, что эти события заменяют события мыши приложений без пера, и эти приложения понимают только пиксели.

Примечание

Объект InkCollector нельзя безопасно освободить в потоке, отличном от пользовательского интерфейса.

Чтобы повысить производительность приложения, удалите объект InkCollector , если он больше не нужен.

Требования

Требование Значение
Минимальная версия клиента
Windows XP Tablet PC Edition [только классические приложения]
Минимальная версия сервера
Ни одна версия не поддерживается
Header
Msinkaut.h (также требуется Msinkaut_i.c)
Библиотека
InkObj.dll

См. также раздел

Ссылка на элемент управления InkEdit

Класс InkDisp

Класс InkOverlay

Справочник по элементу управления InkPicture