我正在try 在Jetpack Compose中画一个圆圈内的文本.
我画了一个圆,圆心是画布的中心.
现在我想要在圆的中心精确地绘制文本.
Jetpack Compose中canvas
中的drawText
函数有topLeft
参数,该参数需要保存文本的矩形左上角的Offset
.我知道我不能把圆的中心作为topLeft
的偏移量,如果我这样做了,结果会是这样的,这不是我想要的.
我希望文本准确地画在圆圈的中心.
以下是代码:
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Green.copy(alpha = 0.2f))
.padding(36.dp),
contentAlignment = Alignment.Center
) {
val textMeasurer = rememberTextMeasurer()
val textToDraw = "A"
Canvas(modifier = Modifier.fillMaxSize()) {
drawCircle(
center = Offset(
x = center.x,
y = center.y
),
radius = 350f,
color = Color.Blue,
style = Stroke(
width = 8f
)
)
drawText(
textMeasurer = textMeasurer,
text = textToDraw,
style = TextStyle(
fontSize = 150.sp,
color = Color.Black,
background = Color.Red.copy(alpha = 0.2f)
),
topLeft = Offset(
x = center.x,
y = center.y
)
)
drawPoints(
points = listOf(Offset(center.x, center.y)),
pointMode = PointMode.Points,
cap = StrokeCap.Round,
color = Color.Red,
strokeWidth = 25f
)
}
}
我可以像这样手动调整偏移量以使其工作,但这不是最佳的和自动的.
topLeft = Offset(
x = center.x - 125,
y = center.y - 270
),
如何才能做到这一点? 感谢任何人的帮助.
注意:我为文本应用的淡红色背景只是为了使文本所使用的底层矩形可视化.我还在圆的中心画了一个点,以便更清楚地说明.