模块

Ink API 是模块化的,因此您可以仅使用所需的部分。

笔划

Strokes 模块是 Ink 库的基础,提供主要的 API 接口,并包含与库交互的核心数据类型。此模块中的关键数据类型包括

几何

Geometry 模块提供了一套用于基本和复杂形状的几何基元,以及用于交集检测和变换的操作。这些基元与 Ink 笔划无缝集成,使您能够构建诸如全笔划橡皮擦和选框工具等功能。

虽然像 BoxVec 这样的类主要用于促进几何运算,但 PartitionedMesh 也可能包含渲染特定的数据。

画笔

Brush 模块充当笔划创建和渲染的声明式配置,其功能类似于文本字体。一个 Brush 对象具有以下属性

  • 颜色:可以是纯色,也可以是分层效果和纹理的基础。
  • 大小:可以是固定的,也可以作为动态大小调整的基础。
  • 系列:类似于文本字体,系列定义了笔划的整体样式。
  • Epsilon:控制笔划矢量几何图形的细节级别,表示视觉区分的最小单位。

epsilon 属性在定义坐标系的精度方面起着至关重要的作用。在 Brush API 部分提供了有关如何选择适当的 epsilon 值的更多指导。

BrushFamily 用作创建富有表现力的笔划的强大配置,而无需深入复杂的几何图形或渲染代码。该库提供了一组预定义的 StockBrushes,包括压感笔、荧光笔和记号笔。

创作

Authoring 模块使开发人员能够捕获用户触摸输入并将其实时渲染为屏幕上的低延迟笔划。这是通过 InProgressStrokesView 类实现的,该类处理运动事件并在绘制时可视化笔划。

笔划完成后,模块使用 onStrokesFinished() 回调(InProgressStrokesFinishedListener 的回调)通知客户端应用程序。回调允许应用程序检索已完成的笔划数据以进行渲染或存储。

渲染

Rendering 模块简化了将墨水笔划绘制到 Android Canvas 的过程。该模块为 Compose 提供了 CanvasStrokeRenderer,为基于视图的布局提供了 ViewStrokeRenderer,两者都优化了渲染性能并确保了高质量的视觉效果,包括抗锯齿。

要将笔划渲染到画布,请使用 create() 方法获取 CanvasStrokeRenderer 实例。然后,使用 draw() 方法将已完成或正在进行的笔划渲染到画布上。

画布可以作为绘制笔划的一部分进行转换(平移、缩放或旋转),但为了确保笔划在屏幕上看起来最佳,应用于画布的转换也必须传递给 CanvasStrokeRenderer#draw()。为了避免需要单独跟踪此项,请改用 ViewStrokeRenderer