Geometry API

Geometry API 允许您创建交互式工具,例如橡皮擦和选择机制。

为了说明 Geometry 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