我想在画布内绘制文本以显示图表的标签。
在 Android 上,我可以使用该库:https ://github.com/tehras/charts (对于 Compose:1-alpha03),但在桌面上我不能。
因此,我试图重写损坏的部分。但我无法显示标签。
原始代码,我尝试将其更改为与 Desktop Source一起使用:
private val textPaint = android.graphics.Paint().apply {
isAntiAlias = true
color = labelTextColor.toLegacyInt()
}
private val textBounds = android.graphics.Rect()
override fun drawAxisLabels(
drawScope: DrawScope,
canvas: Canvas,
drawableArea: Rect,
minValue: Float,
maxValue: Float
) = with(drawScope) {
val labelPaint = textPaint.apply {
textSize = labelTextSize.toPx()
textAlign = android.graphics.Paint.Align.RIGHT
}
val minLabelHeight = (labelTextSize.toPx() * labelRatio.toFloat())
val totalHeight = drawableArea.height
val labelCount = max((drawableArea.height / minLabelHeight).roundToInt(), 2)
for (i in 0..labelCount) {
val value = minValue + (i * ((maxValue - minValue) / labelCount))
val label = labelValueFormatter(value)
val x = drawableArea.right - axisLineThickness.toPx() - (labelTextSize.toPx() / 2f)
labelPaint.getTextBounds(label, 0, label.length, textBounds)
val y = drawableArea.bottom - (i * (totalHeight / labelCount)) + (textBounds.height() / 2f)
canvas.nativeCanvas.drawText(label, x, y, labelPaint)
}
}
对我来说,最后的功能在NativeCanvas::drawText
Compose Desktop 上不存在。我试图用 TextPainter 替换所有逻辑,但没有绘制任何内容。
我该怎么做才能让它发挥作用?或者
是否有依赖项我可以从 Android 导入以使其正常工作?
COMPOSE_DESKTOP_VERSION:“0.3.0-build138”
KOTLIN_VERSION:“1.4.21”