Android路径形状中间的中心文本

我正在尝试在 svg 路径中绘制一些文本。我需要它在形状的最大部分。并像第 1 点那样进行正常旋转。但目前我所拥有的只是第 2 点中的结果。有人可以帮助我实现第 1 点中的结果吗?

http://img1.mukewang.com/64142d4c000149c204260466.jpg

我正在使用 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)


神不在的星期二
浏览 79回答 1
1回答

慕莱坞森

在 Android 中没有可以调用的简单方法来找到路径中最大区域的中心。您需要做的是使用算法找到适合多边形的最大圆。然后将您的文本放在该位置。这个问题可能有用:Largest circle inside a non-convex polygon首先,您需要将路径转换为多边形(一组直线段)。您的路径可能已经是那种形式。如果不是(即它包含圆弧和贝塞尔曲线等),那么您需要将其转换为多边形。在 API 26+ 中,您可以使用Path.approximate()它。在早期版本的 Android 中,这个过程会有点棘手。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java