Para ajudar você a criar traços da forma adequada no Compose, a API Ink oferece módulos de interoperabilidade do Compose para criação, estilo do pincel e forma geométrica do traço.
Para desenhar um traço no Compose, use o
elemento combinável InProgressStrokes que exige uma
instância de pincel padrão, uma maneira de substituir o pincel padrão e um callback
que processa traços concluídos.
Configure o componente de UI.
InProgressStrokes( defaultBrush = currentBrush, nextBrush = onGetNextBrush, onStrokesFinished = onStrokesFinished, )Processe os traços concluídos.
Os traços finalizados são transmitidos ao aplicativo pelo argumento de callback
onStrokesFinisheddeInProgressStrokes.Seu app precisa transmitir os traços finalizados para outro elemento combinável na mesma linha de execução de interface para fazer o commit deles na tela.
@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. } }