Pour une implémentation Compose, veillez à déclencher une recomposition afin que les traits soient effectivement supprimés. Par exemple, vous pouvez utiliser
rememberCoroutineScope dans votre composable et transmettez le champ d'application de coroutine à votre
écouteur tactile, qui vous permet de modifier finishedStrokesState dans le champ d'application
de Compose.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Geometry APIs\n\nThe Geometry APIs allow you to create interactive tools such as erasers and\nselection mechanisms.\n\nTo illustrate practical application of the Geometry APIs, explore the following\neraser implementation example.\n\n### Whole stroke eraser\n\n fun eraseWholeStrokes(\n eraserBox: ImmutableBox,\n finishedStrokesState: MutableState\u003cSet\u003cStroke\u003e\u003e,\n ) {\n val threshold = 0.1f\n\n val strokesToErase = finishedStrokesState.value.filter { stroke -\u003e\n stroke.shape.computeCoverageIsGreaterThan(\n box = eraserBox,\n coverageThreshold = threshold,\n )\n }\n if (strokesToErase.isNotEmpty()) {\n Snapshot.withMutableSnapshot {\n finishedStrokesState.value -= strokesToErase\n }\n }\n }\n\nFor a Compose implementation, make sure to trigger a recomposition, so the\nstrokes are effectively removed. For example, an approach would be to use\n`rememberCoroutineScope` in your composable and pass the coroutine scope to your\ntouch listener, allowing you to modify `finishedStrokesState` within the scope\nof Compose.\n| **Note:** An eraser that only removes the parts of the strokes it touches can be implemented by seeing if a stroke intersects with individual line segments of a [`StrokeInputBatch`](/reference/kotlin/androidx/ink/strokes/StrokeInputBatch) and creating new [`StrokeInputBatch`](/reference/kotlin/androidx/ink/strokes/StrokeInputBatch) and [`Stroke`](/reference/kotlin/androidx/ink/strokes/Stroke) objects out of the line segments that aren't intersected."]]