几何图形 API 允许您创建互动工具,例如橡皮擦和选择机制。
为了说明几何图形 API 的实际应用,请探索以下橡皮擦实现示例。
整条笔触橡皮擦
fun eraseWholeStrokes(
eraserBox: ImmutableBox,
finishedStrokesState: MutableState<Set<Stroke>>,
) {
val threshold = 0.1f
val strokesToErase = finishedStrokesState.value.filter { stroke ->
stroke.shape.computeCoverageIsGreaterThan(
box = eraserBox,
coverageThreshold = threshold,
)
}
if (strokesToErase.isNotEmpty()) {
Snapshot.withMutableSnapshot {
finishedStrokesState.value -= strokesToErase
}
}
}
对于 Compose 实现,请务必触发重组,以便有效地移除笔触。例如,一种方法是在可组合项中使用 rememberCoroutineScope
,并将协程作用域传递给您的触摸监听器,从而允许您在 Compose 的作用域内修改 finishedStrokesState
。