Damit Sie Striche auf idiomatische Weise in Compose erstellen können, bietet die Ink API Compose-Interoperabilitätsmodule für die Erstellung, den Pinsel und die Geometrie.
Um in Compose einen Strich zu zeichnen, verwenden Sie die Composable InProgressStrokes. Dazu sind eine Standardpinselinstanz, eine Möglichkeit zum Überschreiben des Standardpinsels und ein Callback erforderlich, der abgeschlossene Striche verarbeitet.
UI-Komponente einrichten
InProgressStrokes( defaultBrush = currentBrush, nextBrush = onGetNextBrush, onStrokesFinished = onStrokesFinished, )Abgeschlossene Striche verarbeiten
Wenn nasse Striche trocken werden, werden sie über das
onStrokesFinished-Callback-Argument vonInProgressStrokesan die Anwendung übergeben.Ihre App muss die abgeschlossenen Striche an ein anderes Composable-Element im selben UI-Thread übergeben, damit sie auf dem Bildschirm dargestellt werden.
@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. } }