【问题标题】:Center text in the middle of Path shape Android路径形状Android中间的中心文本
【发布时间】:2019-11-21 06:27:57
【问题描述】:

我正在尝试在 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)

【问题讨论】:

    标签: java android svg kotlin


    【解决方案1】:

    在 Android 中没有简单的方法可以调用来找到路径中最大区域的中心。

    您需要做的是使用一种算法来找到适合多边形内的最大圆。然后将您的文本放在该位置。

    这个问题可能有用:Largest circle inside a non-convex polygon

    首先,您需要将路径转换为多边形(一组直线段)。您的路径可能已经采用这种形式。如果不是(即它包含弧和贝塞尔曲线等),那么您需要将其转换为多边形。在 API 26+ 中,您可以为此使用 Path.approximate()。在早期版本的 Android 中,这个过程会有点棘手。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2020-08-24
      • 2020-09-17
      • 2014-02-11
      • 1970-01-01
      • 2012-04-07
      相关资源
      最近更新 更多