Las APIs de Geometry te permiten crear herramientas interactivas, como borradores y mecanismos de selección.
Para ilustrar la aplicación práctica de las APIs de Geometry, explora el siguiente ejemplo de implementación de borrador.
Borrador de trazo completo
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
}
}
}
En el caso de una implementación de Compose, asegúrate de activar una recomposición, de modo que
los trazos se quitan eficazmente. Por ejemplo, un enfoque sería usar rememberCoroutineScope
en tu elemento componible y pasar el alcance de la corrutina a tu objeto de escucha táctil, lo que te permite modificar finishedStrokesState
dentro del alcance de Compose.