android - Canvas 绘制文字方向

标签 android canvas rotation

如何让文字竖写?如何将文字旋转90度? 单独写每个字母是愚蠢的,但现在,我不知道其他方法。

 Paint paint = new Paint();
 public DrawView(Context context, double arr[])
{
    super(context);
    paint.setColor(Color.BLACK);
}
   @Override
   public void onDraw(Canvas canvas)
    {
      canvas.drawText("Test",50, 50, paint);
    }

最佳答案

简单地旋转文本(或其他任何内容)很容易:使用 rotate()旋转 Canvas 的方法(之后旋转回来,否则你画的所有东西都会旋转):

canvas.save();
canvas.rotate(90f, 50, 50);
canvas.drawText("Text",50, 50, paint);
canvas.restore();

save()restore() 方法分别保存和恢复 Canvas 的状态。所以其余绘制的元素不会旋转。如果您只想绘制文本,则不需要这两种方法。

如果想把字符串的字符放在一起,需要对每个字符单独处理。首先,您需要获取字体高度,并且在绘制每个字符时,您需要根据该高度反复增加 y 坐标。

int y = 50;
int fontHeight = 12; // I am (currently) too lazy to properly request the fontHeight and it does not matter for this example :P
for(char c: "Text".toCharArray()) {
    canvas.drawText(c, 50, y, paint);
    y += fontHeight;
}

关于android - Canvas 绘制文字方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14294532/

相关文章:

java - 将公钥存储在sharedPreferences中并检索它

java - File.list() 以不同于 2.2 和 4.0 的顺序返回文件

java - Activity State保存和恢复Helper

ios - flappy Bird 克隆 Xcode 7 Swift 2 如何重置旋转

java - 移动应用程序仿真能够连接到在线应用程序服务但不能在实际设备上运行

javascript - 在 html5 canvas 中填充圆弧轮廓

javascript - 我可以用自己的图像重新绘制 Canvas 图像吗?

javascript - 检测 Canvas 文本 API 支持(Opera Mini)

c# - 如何在 iTextSharp 中旋转文本?

javascript - 围绕世界轴旋转对象