You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Compose Canvas绘制时BlendMode.DstAtop正常工作?

Jetpack Compose Canvas中BlendMode.DstAtop等混合模式未按预期工作

我在使用Compose的Canvas进行自定义绘制时,希望使用BlendMode.DstAtop,但它未按预期工作。以下是我的代码:

Column {
    Canvas(
        modifier = Modifier
            .height(90.dp)
            .fillMaxWidth()
            .graphicsLayer(
                compositingStrategy = CompositingStrategy.Offscreen
            )
    ) {
        val canvasWidth = size.width
        val canvasHeight = size.height

        drawRect(
            Color.Blue,
            Offset(canvasWidth*0.8f/2, canvasHeight*0.8f/2),
        )

        drawCircle(
            Color.Red,
            center = Offset(canvasWidth*0.8f/2, canvasHeight/2),
            blendMode = BlendMode.DstAtop
        )
    }
}

预期BlendMode.DstAtop能得到如下效果:
BlendMode.DstAtop预期效果

但实际得到的是:
BlendMode.DstAtop实际效果

我还测试了其他混合模式,其中BlendMode.SrcIn、BlendMode.DstIn、BlendMode.Multiply、BlendMode.SrcOut均未正常工作,而BlendMode.DstOut、BlendMode.SrcAtop、BlendMode.SrcOver、BlendMode.DstOver可以正常运行。

我尝试过以下解决方案,但这些方法在Jetpack Compose 1.4.1版本中没有效果:

  • Jetpack compose Canvas blendmode not working as expected
  • jetpack compose blendMode or PorterDuff.Mode DST_IN

内容的提问来源于stack exchange,提问作者DKavaliou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:22:54