วาดเส้น

Ink API มีโมดูลความสามารถในการทำงานร่วมกันของ Compose สำหรับการเขียน แปรง และรูปทรง เพื่อช่วยให้คุณเขียนลายเส้นในลักษณะเฉพาะของ Compose

หากต้องการวาดเส้นใน Compose ให้ใช้ Composable InProgressStrokes ซึ่งต้องมี อินสแตนซ์แปรงเริ่มต้น วิธีลบล้างแปรงเริ่มต้น และการเรียกกลับ ที่จัดการเส้นที่วาดเสร็จแล้ว

  1. ตั้งค่าคอมโพเนนต์ UI

    InProgressStrokes(
      defaultBrush = currentBrush,
      nextBrush = onGetNextBrush,
      onStrokesFinished = onStrokesFinished,
    )
    
  2. จัดการเส้นที่วาดเสร็จแล้ว

    เมื่อเส้นเปียกแห้งแล้ว ระบบจะส่งไปยังแอปพลิเคชันผ่านonStrokesFinishedอาร์กิวเมนต์การเรียกกลับของ InProgressStrokes

    แอปของคุณต้องส่งเส้นที่วาดเสร็จแล้วไปยัง Composable อื่นภายใน UI เธรดเดียวกันเพื่อส่งไปยังหน้าจอ

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