android - 如何在 Android 中使用 Canvas 旋转文本

标签 android canvas path geometric-arc

我在 android 中使用 canvas 绘制饼图并使用下面的代码在该饼图的每个切片上绘制文本(在路径上绘制弧线),现在我想绘制文本长度,即从中心到末端每个切片的,所以如何使用开始和扫描角度旋转圆弧。

p.addArc(mEventsRect, fStartAngle, fSweepAngle);
mBgPaints.setColor(iTextColor);
canvas.drawTextOnPath(sTextValue, p, fHOffSet, fVOffSet, mBgPaints);

enter image description here

最佳答案

你可以试试这个 fragment :(来自:http://www.helloandroid.com/tutorials/how-use-canvas-your-android-apps-part-2)

int x = 75;
int y = 185;
paint.setColor(Color.GRAY);
paint.setTextSize(25);
String rotatedtext = "Rotated helloandroid :)";

//Draw bounding rect before rotating text:

Rect rect = new Rect();
paint.getTextBounds(rotatedtext, 0, rotatedtext.length(), rect);
canvas.translate(x, y);
paint.setStyle(Paint.Style.FILL);

canvas.drawText(rotatedtext , 0, 0, paint);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(rect, paint);

canvas.translate(-x, -y);


paint.setColor(Color.RED);
canvas.rotate(-45, x + rect.exactCenterX(),y + rect.exactCenterY());
paint.setStyle(Paint.Style.FILL);
canvas.drawText(rotatedtext, x, y, paint);

关于android - 如何在 Android 中使用 Canvas 旋转文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743027/

相关文章:

Android UI 线程和消息处理程序混淆

安卓工作室 3.1 : updating gradle file cause android studio to freeze

Android CTS 在模拟器上显示 ShellCommandUnresponsiveException

python - Tkinter Canvas 移动留下像素痕迹

javascript - Canvas HTML - lineTo 和 Bezier 曲线之间的平滑度

bash - $PATH 中的波浪号字符 ('~' )? (例如 : PATH ='~/bin' :/usr/bin:/bin)

android - 在我的 kotlin/android 代码中,联系人姓名未显示在收件箱中

javascript - 如何在一个 Canvas 上启用绘制和删除多个元素?

docker - 设置 PATH 变量并在 Dockerfile 中获取环境

path - 给定两条绝对路径,如何表达其中一条路径相对于另一条路径?