如何在Jetpack Compose中沿着路径绘制文本?

10

现在是否有一种使用Jetpack Compose在自定义路径上书写文本的方法?

这是我想要实现的示例图片:

绘制在半圆路径上的文本

1个回答

17

我们使用nativeCanvas在Compose中绘制文本,就像我们在自定义视图中通常做的那样。

例如:

@Composable
fun ArcTextExample() {
    val paint = Paint().asFrameworkPaint()
    Canvas(modifier = Modifier.fillMaxSize()) {
        paint.apply {
            isAntiAlias = true
            textSize = 24f
            typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
        }

        drawIntoCanvas {
            val path = Path()
            path.addArc(RectF(0f, 100f, 200f, 300f), 270f, 180f)
            it.nativeCanvas.drawTextOnPath("Hello World Example", path, 0f, 0f, paint)
        }
    }
}

注意:我们应该使用android.graphics.Path

结果将会像这样:

enter image description here


1
谢谢你的解决方案!这肯定对我很有帮助。我对不使用 android.graphics 的解决方案感兴趣,只使用Jetpack Compose。你知道是否可能仅使用Jetpack Compose来实现吗? - fraherm
3
@fraherm,据我理解,在DrawScope中没有绘制文本的方法。 - Muthukrishnan Rajendran
1
更近期的Compose版本现在具有绘制文本功能:https://developer.android.com/jetpack/compose/graphics/draw/overview#common-drawing - mipa
截至目前评论,仍然没有看到任何在路径上绘制文本的撰写选项。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接