如何让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.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
相关产品推荐
相关产品推荐

