11

如何使该文本垂直书写?如何将文本旋转 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);
    }
4

2 回答 2

32

简单地旋转文本(或其他任何东西)很容易:使用该rotate()方法旋转画布(然后将其旋转回来,否则您绘制的所有内容都会旋转):

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

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

如果要将字符串的字符放在一起,则需要分别处理每个字符。首先,您需要获取字体高度,并且在绘制每个字符时,您需要一遍又一遍地增加这个高度的 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;
}
于 2013-01-12T15:41:21.350 回答
0

正确的版本是:Canvas canvas_front = new Canvas(bitmap_front);

    Paint paint = new Paint();
    paint.setColor(Color.rgb(140, 0, 0));
    paint.setAlpha(80);
    paint.setStrokeWidth(2);

 canvas_front.drawLine(0, (float) (frontIV.getHeight() * 0.9),frontIV.getWidth(), (float) (frontIV.getHeight() * 0.9), paint);

    canvas_front.save();
    canvas_front.rotate((float)  90 , 50, 50);
    canvas_front.drawText("Text",50, 50, paint);
    canvas_front.restore();
    frontIV.setImageBitmap(bitmap_front);
于 2016-08-18T23:22:47.707 回答