墨迹集合

墨迹集合从数字化器开始。 用户将笔放在数字化器上,然后开始书写。 可以使用 API 的墨迹收集功能来管理从笔“流动”的墨迹数据的集合。 你可以通过 Tablets 集合和 Tablet 对象访问 有关 Tablet PC 上可用硬件的信息。 然后使用 InkCollector 对象获取来自数字化器的数据。

Tablets 和 Tablet 对象

平板电脑表示平板电脑的数字化器设备。 一台平板电脑可能有多个数字化器。 使用 Tablet 对象,可以查询连接到 Tablet PC 的可用数字化器设备及其各自的硬件功能。 例如,可以确定正在使用的 平板电脑 是与显示器集成的,还是单独的外部设备。

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 (句柄附加到托管代码) 中的 InkOverlay 对象的 hWnd 属性 (Handle 属性。
  3. InkOverlay 对象的 Enabled 属性设置为 TRUE

InkOverlay 对象包括基本的打印支持,但必须实现打印预览或其他高级打印功能。

InkOverlay 将墨迹序列化格式的墨迹保留 (ISF) 。

注意

如果 InkOverlay 对象的 EditingMode 设置为 DeleteSelect,则会触发其他事件 (,如 InkAddedInkDeletedStroke) 。 如果要实现自己的删除或选择模式,这些事件非常有用。

 

选择墨迹

InkOverlay 对象使用户能够使用套索工具选择包含在跟踪区域中的墨迹对象。 用户还可以通过点击任何 Ink 对象来选择 墨迹

使用 Selection 属性可返回可用于操作用户选择的 Strokes 集合。

选择 一个 Ink 对象或一组 Ink 对象时,大小控点将显示在墨迹边界框的四角以及相邻角之间的所有中点处。 如果用户拖动所选区域内的任意位置,则墨迹在控件内变为可移动。

默认行为

默认情况下,InkOverlay 对象设置为收集墨迹。 墨迹是 53 个墨迹空间单位宽 (其中 1 个墨迹空间单位 = 1 个 HIMETRIC) 。 如果用户未在高对比度模式下运行,则墨迹为黑色。 否则,墨迹将设置为托管代码 ) 中的 WindowText (COLOR_WINDOWTEXT值。 FitToCurveFALSE

光标和按钮对象

光标对应于平板电脑上使用的笔尖。 例如,铅笔有两端。 通常,一端用于写入,另一端用于擦除。 这两端对应于两个游标。 Cursor 类不会与 System.Windows.Forms.Cursor 混淆。

在平板电脑上,光标通常定义为用于写入或删除。 如果应用程序启用此功能,游标可能会更改角色。 某些平板电脑设备允许使用多支笔。 每个游标都有一个在系统上唯一的关联游标 ID。 游标可以有零个或多个关联的按钮。 这些按钮作为 CursorButton 对象提供给应用程序。 应用程序可以为任何给定游标提供特定的 DrawingAttributes 对象。

Drawing Attributes 对象

DrawingAttributes 对象描述如何绘制任何已知的墨迹集。 DrawingAttributes 对象包括基本属性,例如 ColorWidthPenTip。 它还可以包含高级参数,例如可变透明度和贝塞尔平滑,这些参数可以提供有趣的效果或提高墨迹可读性。

PenInputPanel 对象

注意

PenInputPanel 类已弃用。 PenInputPanel 类已被 TextInputPanel 类替换。

 

使用 PenInputPanel 对象,可以轻松地将就地笔输入添加到应用程序。 PenInputPanel 可用作可附加对象,可用于将平板电脑输入面板功能添加到现有控件。 用户界面主要受当前输入语言的授权。 可以选择 为 PenInputPanel 选择默认输入方法(手写或键盘)。 最终用户可以使用用户界面上的按钮在输入方法之间切换。

InkCollector 类 (C++)

InkOverlay 类 (C++)

Microsoft.Ink 命名空间