gpt4 book ai didi

android - 如何水平旋转由 drawTextonPath 创建的圆形文本?

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:39 25 4
gpt4 key购买 nike

我有一个函数可以使用 drawTextOnPath 在 Canvas 上绘制文本。我计算偏移量一切正常,但我想以特定方式绘制它。当前文本旋转偏移等于圆圈偏移。我想将文本旋转 90/45 度。但我想不通。

请有任何想法。

private void drawLegend(Canvas canvas) {
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.rotate(-228, centerX, centerY);

Path circle = new Path();
double halfCircumference = (radius * 2 * Math.PI) - ((radius * 2 * Math.PI) / 8) * 2;
double increments = 5;

for (int i = 0; i <= this.mMaxSpeed; i += increments) {
circle.addCircle(centerX, centerY, radius, Path.Direction.CW);
canvas.drawTextOnPath(String.format("%d", i),
circle,
(float) (i * halfCircumference / this.mMaxSpeed),
-20f,
scalePaint);
}
canvas.restore();
}

这是当前映射 This is current mapping

这就是我希望它显示的方式 Thi is how I wnat it to be displayed

最佳答案

解决方案不是使用 drawTextOnPath 进行绘制,而是使用 drawText 在 Canvas 上进行绘制

        canvas.drawText(String.valueOf(0), (x - width / 2) + 35, (y + height / 2) - 25, scalePaint);
canvas.drawText(String.valueOf(5), (x - width / 2) - 20, (y) + 8, scalePaint);
canvas.drawText(String.valueOf(10), (x - width / 2) + 30, (y - height / 2) + 40, scalePaint);
canvas.drawText(String.valueOf(15), (x), (y - height / 2) - 18, scalePaint);
canvas.drawText(String.valueOf(20), (x + width / 2) - 30, (y - height / 2) + 40, scalePaint);
canvas.drawText(String.valueOf(25), (x + width / 2) + 25, (y) + 8, scalePaint);
canvas.drawText(String.valueOf(30), (x + width / 2) - 35, (y + height / 2) - 25, scalePaint);

7 个月后更新

secret 是使用 sincos 函数来计算 xy 的偏移量。

double theta = (7 * PI / 4) - (i * (2 * PI / 40));
double xPos = radiusScale * 1.2 * Math.sin(theta) + centerX - widthText / 2;
double yPos = radiusScale * 1.2 * Math.cos(theta) + centerY + heightText / 2;

canvas.drawText(textNotch, (float)xPos, (float)yPos, scalePaint);

关于android - 如何水平旋转由 drawTextonPath 创建的圆形文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39297295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com