Menggambar goresan

Untuk membantu Anda menulis goresan dengan cara Compose yang idiomatik, Ink API menyediakan modul interoperabilitas Compose untuk penulisan, kuas, dan geometri.

Untuk menggambar goresan di Compose, gunakan composable InProgressStrokes yang memerlukan instance kuas default, cara mengganti kuas default, dan callback yang menangani goresan yang selesai.

  1. Menyiapkan komponen UI

    InProgressStrokes(
      defaultBrush = currentBrush,
      nextBrush = onGetNextBrush,
      onStrokesFinished = onStrokesFinished,
    )
    
  2. Menangani goresan yang selesai

    Saat goresan basah menjadi kering, goresan tersebut diteruskan ke aplikasi melalui argumen callback onStrokesFinished dari InProgressStrokes.

    Aplikasi Anda harus meneruskan goresan yang telah selesai ke Composable lain dalam thread UI yang sama untuk menerapkan goresan tersebut ke layar.

    @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.
      }
    }