Geometri API'leri

Geometry API'leri, etkileşimli araçlar (ör. silgiler ve nasıl işlediğini tartıştık.

Geometry API'lerinin pratik uygulamasını göstermek için aşağıdaki silgi uygulama örneğini inceleyin.

Tam çizgili silgi

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

Oluşturma uygulaması için, vuruşların etkili bir şekilde kaldırılması amacıyla yeniden oluşturma işlemini tetiklediğinizden emin olun. Örneğin, bu tür durumlarda rememberCoroutineScope'ı composable'ınıza ekleyip koordinat kapsamını dokunma işleyicisi, finishedStrokesState öğesini kapsam dahilinde değiştirmenize olanak tanır sağlayabilirsiniz.