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()キャンバスの状態を保存して復元します。したがって、描画された要素の残りの部分は回転しません。テキストのみをペイントする場合は、これら2つの方法は必要ありません。

文字列の文字を相互に配置する場合は、各文字を個別に処理する必要があります。まず、フォントの高さを取得する必要があります。各文字を描画するときは、この高さで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 に答える