InkCollector 类

表示用于从可用平板电脑设备捕获墨迹的对象。

在透明控件 ((如 GroupBox)后面创建 InkCollector 控件,) WS_EX_TRANSPARENT属性集 将阻止 InkCollector 收集墨迹。

InkCollector 具有以下类型的成员:

事件

InkCollector 类具有这些事件。

事件 说明
CursorButtonDown InkCollector 检测到光标按钮向下时发生。
CursorButtonUp InkCollector 检测到光标按钮向上时发生。
CursorDown 当光标笔尖接触数字化平板电脑表面时发生。
CursorInRange 当光标进入平板电脑上下文的物理检测范围 (邻近) 时发生。
CursorOutOfRange 当光标离开物理检测范围 (平板电脑上下文的邻近) 时发生。
双击 双击 InkCollector 对象时发生。
手势 在识别特定于应用程序的手势时发生。
MouseDown 当鼠标指针位于 InkCollector 对象上并按下鼠标按钮时发生。
MouseMove 当鼠标指针移到 InkCollector 对象上时发生。
MouseUp 当鼠标指针位于 InkCollector 对象上并释放鼠标按钮时发生。
MouseWheel InkCollector 对象具有焦点时鼠标滚轮移动时发生。
NewInAirPackets 当看到空中数据包时发生,当用户将笔移到平板电脑附近且光标位于 InkCollector 对象的窗口中,或者用户在 InkCollector 对象的关联窗口中移动鼠标时发生。
NewPackets InkCollector 对象接收数据包时发生。
笔划 当用户在任何平板电脑上完成绘制新笔画时发生。
SystemGesture 在识别系统手势时发生。
TabletAdded 平板电脑 添加到系统时发生。
TabletRemoved 从系统中删除 平板电脑 时发生。

接口

InkCollector 类定义这些接口。

接口 说明
IInkCollector 此对象实现 IInkCollector COM 接口。

方法

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
只读
获取或设置一个值,该值指示墨迹是否在绘制时呈现。
Enabled
只读
获取或设置一个值,该值指定 InkCollector 对象是否收集笔输入。
Handle
只读
获取或设置 InkCollector 对象所附加到的窗口的句柄。
墨迹
只读
获取或设置与 InkCollector 对象关联的 InkDisp 对象。
MarginX
只读
获取或设置沿 x 轴的边距(以像素为单位)。
MarginY
只读
获取或设置沿 y 轴的边距(以像素为单位)。
MouseIcon
只读
获取或设置当前自定义鼠标图标。
MousePointer
只读
获取或设置一个值,该值指示当鼠标悬停在 对象的特定部分时显示的鼠标指针的类型。
呈现器
只读
获取或设置用于绘制墨迹的 InkRenderer 对象。
SupportHighContrastInk
只读
获取或设置一个值,该值指定当系统处于高对比度模式时,墨迹是否仅呈现为一种颜色。
平板电脑
只读
获取 InkCollector 对象当前用于收集输入的平板电脑设备。

备注

可以通过在 C++ 中调用 CoCreateInstance 方法来实例化此对象。

InkCollector 对象仅收集输入到与其关联的特定窗口中的墨迹和笔势。 InkCollector 的唯一用途是从硬件 (收集墨迹,例如,通过 IInkCursorIInkTablet 对象) 并将其传送到应用程序。 它实质上充当将墨迹分发到一个或多个不同 InkDisp 对象的源,这些对象充当保存分布式墨迹的容器。

若要使用 InkCollector,请创建它,告诉它在哪个窗口中收集绘制的墨迹,然后启用它。 启用后,可以将其设置为仅在三种模式下收集, (InkCollectionMode 枚举) 指定模式:

  • InkOnly,在其中创建 IInkStrokeDisp 对象。
  • GestureOnly,在其中创建 IInkGesture 对象。
  • InkAndGesture,其中创建了笔划、手势或两者,具体取决于应用程序处理事件的方式。

这意味着,对于光标在平板电脑范围内的每次移动, InkCollector 始终收集笔划或手势,有时两者兼而有之。 手势支持是使用 Microsoft 手势识别器内置的。

InkCollector 处理所有平板电脑输入。 可以从所有附加的平板电脑 (同时收集墨迹,包括鼠标) 。 IInkCursorIInkCursorButton 对象中的更改可能导致 InkCollector 对象触发事件。

InkCollector 还管理它在存在期间遇到的游标列表。 当 InkCollector 遇到新游标时, CursorInRange 事件将触发, 并将 newCursor 参数设置为 VARIANT_TRUE。 应用程序使用 InkCollector 管理新的游标。

多个 InkCollector 可以与特定窗口句柄相关联,即使它们在构造函数中设置的集合区域或 与 SetWindowInputRectangle 方法重叠也是如此。 但是,此方案的唯一工作方式是,如果每个 InkCollector 调用 SetSingleTabletIntegratedMode 并使用唯一的平板电脑。 通过此行为,可以轻松地将墨迹存储在每个平板电脑的单独对象中。

如果一个已启用 的 InkCollector 的 窗口输入矩形 (使用 Enabled 属性设置) 与另一个已启用 的 InkCollector 的窗口输入矩形重叠,则会发生错误。

注意

只要在任何已知时间只启用其中一个输入矩形,重叠就不会出现错误。

MouseDownMouseMoveMouseUpMouseWheel 事件返回 x 和 y 坐标(以像素为单位),而不是与墨迹空间关联的 HIMETRIC 单位。 这是因为这些事件取代了不识别笔的应用程序的鼠标事件,并且这些应用程序仅理解像素。

注意

无法在非 UI 线程上安全释放 InkCollector 对象。

若要提高应用程序的性能,请在不再需要 InkCollector 对象时将其释放。

要求

要求
最低受支持的客户端
Windows XP Tablet PC Edition [仅限桌面应用]
最低受支持的服务器
无受支持的版本
标头
Msinkaut.h (还需要 Msinkaut_i.c)

InkObj.dll

另请参阅

InkEdit 控件参考

InkDisp 类

InkOverlay 类

InkPicture 控件参考