如何使文本垂直写入?如何将文字旋转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);
}
答案 0 :(得分:28)
简单地旋转文本(或其他任何内容)很简单:使用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;
}
答案 1 :(得分: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);