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


Коллекция рукописного ввода

Коллекция рукописного ввода начинается с дигитайзера. Пользователь помещает перо в дигитайзер и начинает писать. Функции сбора рукописных фрагментов API можно использовать для управления сбором данных рукописного ввода, которые "передаются" из пера. У вас есть доступ к сведениям о доступном оборудовании на планшетном компьютере с помощью коллекции Tablets и объекта Tablet . Затем используйте объект InkCollector , чтобы получить данные, поступающие от дигитайзера.

Планшеты и объект Tablet

Планшет представляет устройство дигитайзера планшетного компьютера. На планшете может быть несколько дигитайзеров. С помощью объекта Tablet можно запросить доступные устройства дигитайзера, подключенные к планшетному компьютеру, и соответствующие аппаратные возможности. Например, можно определить, интегрирован ли планшет с дисплеем или является отдельным внешним устройством.

Объект InkCollector

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

Примечание

Одновременное создание рукописного ввода с помощью нескольких перьев может работать или не работать в зависимости от аппаратных возможностей устройства дигитайзера.

 

Как работает сборщик рукописного ввода

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

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

Объект InkOverlay

Объект InkCollector , описанный ранее, полезен для приложений, чтобы предоставить собственную модель для выбора, стирания и другого взаимодействия с пользователем. Объект InkOverlay является надмножеством объекта InkCollector , который обеспечивает поддержку редактирования. Это полезно для приложений для интеграции рукописного рисования и редактирования в собственный холст документа с помощью набора стандартных моделей выбора рукописного ввода, предоставляемых объектом .

Как объект InkCollector , так и объект InkOverlay (а также элемент управления InkPicture ) используют общие конструкции, такие как объект Ink и коллекция DrawingAttributes , чтобы основной способ изменения цвета рукописного ввода везде был одинаковым. Это позволяет повторно использовать код и иметь общий программный доступ, что может быть особенно важно, если вы предлагаете поддержку сценариев в приложении.

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

InkOverlay расширяет класс InkCollector тремя способами:

  • Он вызывает события для изменения атрибутов начала, конца и рукописного ввода.
  • Он позволяет пользователям выбирать, удалять и изменять размер рукописного ввода.
  • Он поддерживает команды вырезать, копировать и вставлять.

Типичный сценарий, в котором удобно использовать InkOverlay , — это разметка слайда презентации или изображения. Объект InkOverlay позволяет легко реализовать возможности рукописного ввода и макета, необходимые для этого сценария.

Для работы с InkOverlay:

  1. Создание экземпляра объекта InkOverlay .
  2. Присоедините hWnd (дескриптор в управляемом коде) окна к свойству hWnd объекта InkOverlay (свойство Handle в управляемом коде).
  3. Задайте для свойства Enabled объекта InkOverlay значение TRUE.

Объект InkOverlay включает базовую поддержку печати, но необходимо реализовать предварительный просмотр или другие расширенные возможности печати.

InkOverlay сохраняет рукописный ввод в сериализованном формате рукописного ввода (ISF).

Примечание

Если для объекта InkOverlayзадано значение Delete или Select, активируются другие события (например, InkAdded, InkDeleted и Stroke). Эти события полезны, если вы хотите реализовать собственные режимы удаления или выбора.

 

Выбор рукописного ввода

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

Используйте свойство Selection , чтобы вернуть коллекцию Strokes , которую можно использовать для управления выбором пользователя.

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

Поведение по умолчанию

Объект InkOverlay по умолчанию получает рукописный ввод. Длина рукописного ввода составляет 53 единицы пространства рукописного ввода (где 1 единица пространства рукописного ввода = 1 HIMETRIC). Рукописный ввод будет черным, если пользователь не работает в режиме высокой контрастности. В противном случае для рукописного ввода устанавливается значение COLOR_WINDOWTEXT (WindowText в управляемом коде). FitToCurve имеет значение FALSE.

Объекты Cursor и Button

Курсор соответствует кончику пера, используемому на планшетном компьютере. Например, карандаш имеет два конца. Как правило, один конец используется для письма, а другой используется для стирания. Эти два конца соответствуют двум курсорам. Класс Cursor не следует путать с System.Windows.Forms.Cursor.

На планшетном компьютере курсор обычно определяется для записи или стирания. Курсор может изменить роли, если приложение включает эту функцию. Некоторые устройства с планшетным пк позволяют использовать несколько перьев. Каждый курсор имеет связанный идентификатор курсора, который является уникальным в системе. Курсор может иметь ноль или более связанных кнопок. Эти кнопки предоставляются приложению в виде объектов CursorButton. Приложение может предоставить определенный объект DrawingAttributes для любого заданного курсора.

Объект атрибутов рисования

Объект DrawingAttributes описывает способ рисования любого известного набора рукописных фрагментов. Объект DrawingAttributes включает основные свойства, такие как Color, Width и PenTip. Он также может охватывать расширенные параметры, такие как прозрачность переменных и сглаживание Безье, которые могут обеспечить интересные эффекты или улучшить удобочитаемость рукописного ввода.

Объект PenInputPanel

Примечание

Класс PenInputPanel устарел. Класс PenInputPanel заменен классом TextInputPanel .

 

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

Класс InkCollector (C++)

Класс InkOverlay (C++)

Пространство имен Microsoft.Ink