Para ayudarte a crear trazos de forma idiomática con Compose, la API de Ink proporciona módulos de interoperabilidad de Compose para la creación, el pincel y la geometría.
Para dibujar un trazo en Compose, usa el elemento InProgressStrokes que admite composición y que requiere una instancia de pincel predeterminada, una forma de anular el pincel predeterminado y una devolución de llamada que controla los trazos terminados.
Cómo configurar el componente de IU
InProgressStrokes( defaultBrush = currentBrush, nextBrush = onGetNextBrush, onStrokesFinished = onStrokesFinished, )Cómo controlar los trazos finalizados
Cuando los trazos húmedos se secan, se pasan a la aplicación a través del argumento de devolución de llamada
onStrokesFinisheddeInProgressStrokes.Tu app debe pasar los trazos terminados a otro elemento Composable dentro del mismo subproceso de IU para confirmarlos en la pantalla.
@Composable fun DrawingScreen( finishedStrokes: List<Strokes>, onStrokesFinished: (List<Stroke>) -> Unit, currentBrush: Brush, onGetNextBrush: () -> Brush, modifier: Modifier = Modifier ) { val canvasStrokeRenderer = remember { CanvasStrokeRenderer.create() } Box(modifier = Modifier.fillMaxSize()) { // The Canvas for drawing the permanent, dry strokes. Canvas(modifier = Modifier.fillMaxSize()) { finishedStrokes.forEach { stroke -> canvasStrokeRenderer.draw( stroke = stroke, canvas = this, strokeToScreenTransform = Matrix() ) } } //The wet ink layer for live drawing. // The InProgressStrokes composable for the wet ink layer goes here. } }