Dem*_*god 9 android android-jetpack-compose
我有一个图像,我想在它上面绘制一个带有透明圆圈的深色矩形,所以结果将是这样的:

我最终得到了这段代码:
Box(modifier = Modifier
.clip(RectangleShape)
.fillMaxSize()
.background(Color.Black)
.pointerInput(Unit) {
detectTransformGestures { centroid, pan, zoom, rotation ->
scale *= zoom
}
}) {
Image(
modifier = Modifier
.align(Alignment.Center)
.graphicsLayer(
scaleX = maxOf(.2f, minOf(5f, scale)),
scaleY = maxOf(.2f, minOf(5f, scale))
),
bitmap = bitmap.asImageBitmap(),
contentDescription = null
)
Canvas(modifier = Modifier.fillMaxSize(), onDraw = {
drawRect(Color.Black.copy(alpha = 0.8f))
drawCircle(
Color.Transparent,
style = Fill,
blendMode = BlendMode.Clear
)
})
}
Run Code Online (Sandbox Code Playgroud)
但它似乎只是在图像顶部画了一个黑圆圈,而不是清除变暗的矩形......
如果您建议如何根据此圆坐标裁剪图像,这也会非常方便。
Phi*_*hov 27
clipPath您可以与clipOp = ClipOp.Difference选项一起使用:
Canvas(modifier = Modifier.fillMaxSize()) {
val circlePath = Path().apply {
addOval(Rect(center, size.minDimension / 2))
}
clipPath(circlePath, clipOp = ClipOp.Difference) {
drawRect(SolidColor(Color.Black.copy(alpha = 0.8f)))
}
}
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
5396 次 |
| 最近记录: |