Geometry API ช่วยให้คุณสร้างเครื่องมือแบบอินเทอร์แอกทีฟ เช่น ยางลบและกลไกการเลือก
หากต้องการดูตัวอย่างการใช้งานจริงของ Geometry API โปรดดูตัวอย่างการใช้งาน Eraser ต่อไปนี้
ยางลบทั้งจังหวะ
fun eraseWholeStrokes(
eraserBox: ImmutableBox,
finishedStrokesState: MutableState<Set<Stroke>>,
) {
val threshold = 0.1f
val strokesToErase = finishedStrokesState.value.filter { stroke ->
stroke.shape.computeCoverageIsGreaterThan(
box = eraserBox,
coverageThreshold = threshold,
)
}
if (strokesToErase.isNotEmpty()) {
Snapshot.withMutableSnapshot {
finishedStrokesState.value -= strokesToErase
}
}
}
สำหรับการใช้งานการเขียน อย่าลืมทริกเกอร์การจัดองค์ประกอบใหม่เพื่อให้
เส้นโครงร่างถูกนำออกได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น วิธีการคือใช้
rememberCoroutineScope
ใน Composable และส่งขอบเขต Coroutine ไปยัง
Listener แบบสัมผัส ซึ่งช่วยให้คุณสามารถแก้ไข finishedStrokesState
ภายในขอบเขตได้
ของ Compose