我有一个图像组合体,我希望用户能够放大图像的某一部分。例如,如果在图像的左下角捏住,那么就会放大该区域而不是图像中心。当缩放后,如果用一个手指,就可以在图像周围移动。
在我的当前代码中,我已经实现了捏合缩放的逻辑,但它默认是以图像中心为基准进行缩放,无论在哪里捏住图像。并且在缩放时没有对图像进行平移的逻辑。
所以我想要实现两件事情:
在我的当前代码中,我已经实现了捏合缩放的逻辑,但它默认是以图像中心为基准进行缩放,无论在哪里捏住图像。并且在缩放时没有对图像进行平移的逻辑。
Image(
painter = painterResource(id = R.drawable.sample_image),
contentDescription = "some description here",
modifier = Modifier
.graphicsLayer(
scaleX = scale.value,
scaleY = scale.value
)
.pointerInput(Unit) {
detectTransformGestures { _, _, zoom, _ ->
scale.value = when {
scale.value < 0.5f -> 0.5f
scale.value > 3f -> 3f
else -> scale.value * zoom
}
}
}
)
所以我想要实现两件事情:
- 能够缩放到实际被捏住的位置(而不是图像中心)
- 当放大时,能够在图像周围移动