kokoichi206 / android-app

0 stars 0 forks source link

Canvas であそぼ #21

Open kokoichi206 opened 1 year ago

kokoichi206 commented 1 year ago

Crop Image

Links

memo

alpha がいじられているもの(blendMode = Clear を含む)は、Layer がなんか特殊な扱いされるので、少し頑張る必要あるみたい?

kokoichi206 commented 1 year ago
@Composable
fun ImageCrop() {

    Box(
        modifier = Modifier
            .fillMaxSize(),
    ) {
        Image(
            modifier = Modifier
                .fillMaxSize(),
            painter = painterResource(id = R.drawable.background),
            contentDescription = "",
        )

        Canvas(
            modifier = Modifier
                .fillMaxSize(),
        ) {
            val canvasWidth = size.width
            val canvasHeight = size.height

            with(drawContext.canvas.nativeCanvas) {
                val checkPoint = saveLayer(null, null)

                drawRect(
                    color = Color.DarkGray.copy(alpha = 0.8f),
                    size = Size(canvasWidth, canvasHeight)
                )
                drawCircle(
                    color = Color.Transparent,
                    center = Offset(x = canvasWidth / 2, y = canvasHeight / 2),
                    radius = size.minDimension * 0.4f,
                    blendMode = BlendMode.Clear,
                )

                restoreToCount(checkPoint)
            }
        }
    }
}
Screen Shot 2022-11-18 at 16 49 31
kokoichi206 commented 1 year ago

https://github.com/kokoichi206/android-app/blob/master/PlayGround/app/src/main/java/jp/mydns/kokoichi0206/playground/ImageCrop.kt

https://user-images.githubusercontent.com/52474650/202670143-abb0a666-f7cd-4caf-b75f-5d0a884441ff.mov