2

を使用してテキストを描画する必要があります

canvas.drawText("1",x,y, ペイント);

しかし、問題は、「テキストの中心」が私が与えた位置と一致しないことです.後者を行う方法はありますか.助けてください。

前もって感謝します

4

1 に答える 1

6

ペイント インスタンスに配置を設定する必要があります。

paint.setTextAlign(Paint.Align.CENTER);

描く前。

参照: http://developer.android.com/reference/android/graphics/Paint.html#setTextAlign(android.graphics.Paint.Align )

編集: 垂直方向の中央にも配置したいというあなたの指示に従って、私はこれに似たアプローチをとります:

            paint.setColor(Color.WHITE);

            paint.setTextAlign(Align.LEFT);

            String text = "Hello";
            Rect bounds = new Rect();
            float x = 100, y = 100;
            paint.getTextBounds(text, 0, text.length(), bounds); // Measure the text
            canvas.drawLine(0, y, canvas.getWidth(), y, paint); // Included to show vertical alignment
            canvas.drawLine(x, 0, x, canvas.getHeight(), paint); // Included to show horizsontal alignment

            canvas.drawText(text, x - bounds.width() * 0.5f, y + bounds.height() * 0.5f, paint); // Draw the text

または、ペイントの中央揃えを使用します。

            paint.setColor(Color.WHITE);

            paint.setTextAlign(Align.CENTER);

            String text = "Hello";
            Rect bounds = new Rect();
            float x = 100, y = 100;
            paint.getTextBounds(text, 0, text.length(), bounds); // Measure the text
            canvas.drawLine(0, y, canvas.getWidth(), y, paint); // Included to show vertical alignment
            canvas.drawLine(x, 0, x, canvas.getHeight(), paint); // Included to show horizsontal alignment

            canvas.drawText(text, x, y + bounds.height() * 0.5f, paint); // Draw the text
于 2012-06-22T07:34:47.977 に答える