По центру текста в середине Path shape Android - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь нарисовать текст внутри пути svg.Мне нужно это в большей части фигуры.И с нормальным вращением, как в пункте 1. Но в настоящее время все, что у меня есть, это результат, как в пункте 2. Может ли кто-нибудь помочь мне достичь результата, как в пункте 1?

draw a path with canvas and draw a text in this path

Я использую 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)

1 Ответ

1 голос
/ 12 июля 2019

Нет простого метода, который вы можете вызвать в Android, чтобы найти центр самой большой области на пути.

Что вам нужно сделать, это использовать алгоритм, чтобы найти самый большой круг, который поместится внутриполигонЗатем поместите текст в эту позицию.

Этот вопрос может быть полезен: Самый большой круг внутри невыпуклого многоугольника

Сначала вам нужно преобразовать свой путь вмногоугольник (набор отрезков прямых линий).Ваш путь уже может быть в этой форме.Если это не так (т. Е. Содержит дуги, кривые Безье и т. Д.), Вам необходимо преобразовать его в многоугольник.В API 26+ вы можете использовать Path.approximate() для этого.В более ранних версиях Android этот процесс будет немного сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...