我正在尝试在svg路径内绘制一些文本。我需要形状的最大部分。并像点1那样进行正常旋转。但是,我目前所拥有的只是点2的结果。 有人可以帮我达到第1点的结果吗?
我正在使用Canvas绘制路径:
var bitmap = Bitmap.createBitmap(
1000,
1000,
Bitmap.Config.ARGB_8888)
var canvas = Canvas(bitmap)
canvas.drawColor(Color.LTGRAY)
var paint = Paint()
paint.color =Color.GREEN
canvas.drawPath(p, paint)
paint.color = Color.BLACK
paint.setStyle(Paint.Style.FILL)
paint.textSize = 20f
var text= "250"
canvas.drawTextOnPath(text,
p,
50f,0f,
paint)
var rectF = RectF()
pathObject.computeBounds(rectF, true)
//the rectangle to show the rect of the Path
paint.color = Color.TRANSPARENT
paint.setStyle(Paint.Style.STROKE)
paint.color = Color.RED
paint.strokeWidth =2f
canvas.drawRect(rectF,paint)
答案 0 :(得分:1)
您无法在Android中调用任何简单的方法来查找路径中最大区域的中心。
您需要做的是使用一种算法来找到适合多边形的最大圆。然后将您的文字放在该位置。
这个问题可能有用:Largest circle inside a non-convex polygon
首先,您需要将路径转换为多边形(一组直线段)。您的路径可能已经是这种形式。如果不是(即包含弧和贝塞尔曲线等),则需要将其转换为多边形。在API 26+中,您可以使用Path.approximate()
。在较早的Android版本中,该过程会有些棘手。