I need to draw a text on a circle path.
I have tried the drawTextOnPath()
method. But for texts like "fertile window" in the image attched, the text rotates and is not readable.
Code I have used :
customPath2.addArc(mCircleRectF, 30F, 64.28F);
customPaint2.setAntiAlias(true);
customPaint2.setDither(true);
customPaint2.setStrokeWidth(mCircleStrokeWidth);
customPaint2.setColor(Color.parseColor("#93BE66"));
customPaint2.setStyle(Paint.Style.STROKE);
customPaint2.setStrokeCap(Paint.Cap.ROUND);
canvas.drawPath(customPath2, customPaint2);
titlePaint.setColor(Color.parseColor("#ffffff"));
titlePaint.setAntiAlias(true);
titlePaint.setTypeface(Typeface.MONOSPACE); titlePaint.setLetterSpacing(0.07F);
titlePaint.setTextAlign(Paint.Align.CENTER);
titlePaint.setTextSize(35f);
canvas.drawTextOnPath("FERTILE WINDOW", customPath2, 0, 8, titlePaint);
Thanks to comments for their help, to draw the text "outward", make the arc counterclockwise.
In your example, startAngle becomes 94.28
and sweepAngle becomes -64.28
.
Kotlin:
val enclosingRect = RectF(0f, 0f, 200f, 200f)
val path = Path()
path.addArc(enclosingRect, 94.28f, -64.28f)
canvas.drawTextOnPath("FERTILE WINDOW", path, 0f, 0f, myPaint)
Java:
RectF enclosingRect = new RectF(0f, 0f, 200f, 200f);
Path path = new Path();
path.addArc(enclosingRect, 94.28f, -64.28f);
canvas.drawTextOnPath("FERTILE WINDOW", path, 0f, 0f, myPaint);
That was for texts at the bottom of the circle (from 0
to 180
or from -180
to -360
degrees).
For angles between 180
and 360
or 0
and -180
degrees you want to draw the arcs clockwise.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With