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 的唯一用途是从硬件 (收集墨迹,例如,通过 IInkCursor 和 IInkTablet 对象) 并将其传送到应用程序。 它实质上充当将墨迹分发到一个或多个不同 InkDisp 对象的源,这些对象充当保存分布式墨迹的容器。
若要使用 InkCollector,请创建它,告诉它在哪个窗口中收集绘制的墨迹,然后启用它。 启用后,可以将其设置为仅在三种模式下收集, (InkCollectionMode 枚举) 指定模式:
- InkOnly,在其中创建 IInkStrokeDisp 对象。
- GestureOnly,在其中创建 IInkGesture 对象。
- InkAndGesture,其中创建了笔划、手势或两者,具体取决于应用程序处理事件的方式。
这意味着,对于光标在平板电脑范围内的每次移动, InkCollector 始终收集笔划或手势,有时两者兼而有之。 手势支持是使用 Microsoft 手势识别器内置的。
InkCollector 处理所有平板电脑输入。 可以从所有附加的平板电脑 (同时收集墨迹,包括鼠标) 。 IInkCursor 和 IInkCursorButton 对象中的更改可能导致 InkCollector 对象触发事件。
InkCollector 还管理它在存在期间遇到的游标列表。 当 InkCollector 遇到新游标时, CursorInRange 事件将触发, 并将 newCursor 参数设置为 VARIANT_TRUE。 应用程序使用 InkCollector 管理新的游标。
多个 InkCollector 可以与特定窗口句柄相关联,即使它们在构造函数中设置的集合区域或 与 SetWindowInputRectangle 方法重叠也是如此。 但是,此方案的唯一工作方式是,如果每个 InkCollector 调用 SetSingleTabletIntegratedMode 并使用唯一的平板电脑。 通过此行为,可以轻松地将墨迹存储在每个平板电脑的单独对象中。
如果一个已启用 的 InkCollector 的 窗口输入矩形 (使用 Enabled 属性设置) 与另一个已启用 的 InkCollector 的窗口输入矩形重叠,则会发生错误。
注意
只要在任何已知时间只启用其中一个输入矩形,重叠就不会出现错误。
MouseDown、MouseMove、MouseUp 和 MouseWheel 事件返回 x 和 y 坐标(以像素为单位),而不是与墨迹空间关联的 HIMETRIC 单位。 这是因为这些事件取代了不识别笔的应用程序的鼠标事件,并且这些应用程序仅理解像素。
注意
无法在非 UI 线程上安全释放 InkCollector 对象。
若要提高应用程序的性能,请在不再需要 InkCollector 对象时将其释放。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows XP Tablet PC Edition [仅限桌面应用] |
最低受支持的服务器 |
无受支持的版本 |
标头 |
|
库 |
|