Dynamic-Renderer 插件
动态呈现器插件是一个对象,它在 由 RealTimeStylus 对象处理时实时显示平板电脑笔数据。 稍后,对于窗体刷新等事件,动态呈现器插件或墨迹收集器插件可能会重绘墨迹。
DynamicRenderer 对象
RealTimeStylus 对象实现 IStylusSyncPlugin 接口。 DynamicRenderer 对象在绘制墨迹时实时呈现墨迹。 启用 DynamicRenderer 对象时调用 Refresh 方法时,DynamicRenderer 对象将重绘当前正在收集的笔划。 DynamicRenderer 对象的 Enabled 属性最初设置为 FALSE。
注意
从托管代码中的 Paint 事件处理程序中调用 DynamicRenderer 对象的 Refresh 方法时,请将 DynamicRenderer 对象的 ClipRectangle 属性设置为 PaintEventArgs 对象的 ClipRectangle 属性。
DynamicRenderer 对象可以暂时缓存墨迹数据。 若要在托管代码中使用此功能,请将 EnableDataCache 属性设置为 TRUE。 当 DynamicRenderer 对象收到对其 IStylusSyncPlugin.StylusUp 方法的调用时,它会缓存笔划数据并将自定义触笔数据添加到输入队列,以响应笔划的 StylusUpData 对象。 CustomStylusData 对象的 CustomDataId 属性设置为 DynamicRendererCachedDataGuid 值,CustomStylusData 对象的 Data 属性包含 DynamicRendererCachedData 对象。 收集了笔划并可以静态呈现后,调用 DynamicRenderer 对象的 ReleaseCachedData 方法。 启用 DynamicRenderer 对象时调用 Refresh 方法时,DynamicRenderer 对象将重绘缓存的所有笔划。 当 DataCacheEnabled 属性设置为 false 时,将删除缓存的笔划数据。
下图演示了设置 DynamicRenderer 对象的 DataCacheEnabled 属性时,DynamicRenderer 对象如何将数据添加到平板电脑笔数据。
在此图中,带“SD”的圆圈表示一个StylusDown 对象,以“P”为字母的圆圈表示已添加到 RealTimeStylus 对象的输出队列中且尚未发送到异步插件集合的 Packets 对象。 字母为“SU”的圆圈表示 RealTimeStylus 对象当前正在处理的 StylusUp 对象。 它被发送到同步插件集合,然后放置在输出队列中。 字母为“DR”的圆圈表示 由 DynamicRenderer 插件添加到输入队列的自定义触笔数据,以响应与“SU”关联的触笔通知。 然后,将写有“DR”的自定义触笔数据传递到同步插件,然后传递到输出队列,然后再处理下一个平板电脑笔数据。 空圆表示在输出队列中添加未来平板电脑笔数据的位置。 图中还表示的墨迹收集器插件调用 DynamicRenderer 对象的 ReleaseCachedData 方法,以在墨迹收集插件处理笔划后释放缓存的笔划数据。
特殊注意事项
以下列表描述了使用 DynamicRenderer 对象时要考虑的其他要点。
不应将 DynamicRenderer 对象附加到多个 RealTimeStylus 对象。 启用 DynamicRenderer 对象所附加到的两个 RealTimeStylus 对象后,将发生以下情况。
- DynamicRenderer 对象引发异常,以响应对其 RealTimeStylusEnabled 方法的第二次调用。
- 启用的第二个 RealTimeStylus 对象生成 Error 对象,并通知其插件集合中剩余的错误插件。
- DynamicRenderer 对象停止呈现平板电脑笔数据。
当将 guid 参数设置为 DynamicRendererCachedDataGuid 全局唯一标识符 (GUID) 调用其 AddCustomStylusDataToQueue 方法时,RealTimeStylus 对象将引发异常。
DynamicRenderer 对象作为组件对象模型 (COM) 包装器实现,不能直接调用其 IStylusSyncPlugin 接口方法。 有关 COM 操作和 RealTimeStylus 对象的详细信息,请参阅 StylusInput API 的实现说明。
自定义呈现
可以通过创建订阅 StylusDown、 Packets 和 StylusUp 通知的同步插件来创建自己的动态呈现器插件。 然后,插件可以在绘制笔划时呈现笔划。 例如,这可能是实现使用自由格式选择或选择框的选择工具的一种方式。