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


Класс 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 Происходит при распознавании системного жеста.
ПланшетДобавлен Происходит при добавлении планшета в систему.
Планшет удален Происходит при удалении планшета из системы.

Интерфейсы

Класс 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 входные данные пером.
Handle
Только для чтения
Возвращает или задает дескриптор окна, к которому присоединен объект InkCollector .
Рукописный ввод
Только для чтения
Возвращает или задает объект InkDisp , связанный с объектом InkCollector .
MarginX
Только для чтения
Возвращает или задает поля вдоль оси X в пикселях.
MarginY
Только для чтения
Возвращает или задает поля вдоль оси Y в пикселях.
MouseIcon
Только для чтения
Возвращает или задает текущий пользовательский значок мыши.
MousePointer
Только для чтения
Возвращает или задает значение, указывающее тип указателя мыши, который отображается при наведении указателя мыши на определенную часть объекта.
Обработчик
Только для чтения
Возвращает или задает объект InkRenderer , используемый для рисования рукописного ввода.
SupportHighContrastInk
Только для чтения
Возвращает или задает значение, указывающее, отображается ли рукописный ввод только одним цветом, если система находится в режиме высокой контрастности.
Планшет
Только для чтения
Возвращает планшетное устройство, которое объект InkCollector в настоящее время использует для сбора входных данных.

Комментарии

Этот объект можно создать, вызвав метод 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 (заданный свойством Enabled ) перекрывает входной прямоугольник окна другого включенного объекта InkCollector.

Примечание

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

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

Примечание

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

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

Требования

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

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

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

Класс InkDisp

Класс InkOverlay

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