Чтобы помочь вам создавать штрихи в соответствии с идиоматическим стилем Compose, API Ink предоставляет модули взаимодействия с Compose для создания штрихов, кистей и геометрии.
Для рисования обводки в Compose используйте компонент InProgressStrokes , который требует наличия экземпляра кисти по умолчанию, способа переопределения кисти по умолчанию и функции обратного вызова для обработки завершенных обводок.
Настройка компонента пользовательского интерфейса
InProgressStrokes( defaultBrush = currentBrush, nextBrush = onGetNextBrush, onStrokesFinished = onStrokesFinished, )Обработайте завершенные удары
Когда влажные мазки становятся сухими, они передаются приложению через аргумент обратного вызова
onStrokesFinishedфункцииInProgressStrokes.Ваше приложение должно передать готовые штрихи другому компоненту Composable в том же потоке пользовательского интерфейса, чтобы отобразить их на экране.
@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. } }