【AndroidのCanvasに向き合おう】 文字を描こう
Canvasに文字を描こう
文字を描画する | ||
void | drawText(String text, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawText(char[] text, int index, int count, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawText(String text, int start, int end, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawText(CharSequence text, int start, int end, float x, float y, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。
|
void | drawPosText(String text, float[] pos, Paint paint) | 座標、Paint、文字列を指定して文字を描画する。 API level 16で非推奨になりました。
|
void | drawPosText(char[] text, int index, int count, float[] pos, Paint paint) | 座標、Paint、char配列を指定して文字を描画する。 API level 16で非推奨になりました。
|
void | drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) | Path、Paint、文字列を指定して文字を描画する。 描画開始位置はPathの始端からhOffsetの位置になります。 文字の描画時の長さ(hOffsetを含む)がPathの長さを超えてしまうと終端にすべて描画されます。
|
void | drawTextOnPath(char[] text, int index, int count, Path path, float hOffset, float vOffset, Paint paint) | Path、Paint、char配列を指定して文字を描画する。 描画開始位置はPathの始端からhOffsetの位置になります。 文字の描画時の長さ(hOffsetを含む)がPathの長さを超えてしまうと終端にすべて描画されます。
|
使用例
実際にcanvasを描画してみましょう。
今回も独自Viewを定義しました。
public class MyCanvasText extends View{ public MyCanvasText(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { char[] drawTextArray = new char[]{'d','r','a','w','T','e','x','t'}; String drawTextString = "drawText"; Paint paint = new Paint(); //文字サイズを50に設定 paint.setTextSize(50); paint.setStrokeWidth(5); paint.setColor(Color.BLACK); //[x:100,y:100]から描画する。 canvas.drawText(drawTextString,100,100, paint); paint.setColor(Color.GREEN); //文字配列の1番目から3個の文字を[x:100,y:300]から描画する。 canvas.drawText(drawTextArray, 1,3,100,300, paint); paint.setColor(Color.BLUE); //文字列の1番目から4番目の文字を[x:100,y:500]から描画する。 canvas.drawText(drawTextString,1,5,100,500,paint); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(drawTextString).append(drawTextArray); paint.setColor(Color.RED); //StringBuilderの1番目から4番目の文字を[x:100,y:700]から描画する。 canvas.drawText(stringBuilder,1,5,100,700,paint); float[] pos = new float[]{ 100,800, 120,820, 140,840, 160,860, 180,880, 200,900, 220,920, 240,940, }; paint.setColor(Color.MAGENTA); //文字列の各文字の[x:pos[要素番号*2],pos[y:要素番号*2+1]]に描画する。 canvas.drawPosText(drawTextString,pos,paint); pos = new float[]{ 100,840, 120,860, 140,880, }; paint.setColor(Color.CYAN); //文字配列の1番目から3個の文字を[x:pos[(要素番号-index)*2],pos[y:(要素番号-index)*2+1]]に描画する。 canvas.drawPosText(drawTextArray, 1,3, pos, paint); //中心座標[x:100,y:1000],半径100,3時の位置から時計周りのPathを定義 Path path = new Path(); path.addCircle(100,1000,100,Path.Direction.CW); paint.setColor(Color.LTGRAY); //文字列の文字をPathの50の位置から、pathの上方向に10の距離に描画する。 canvas.drawTextOnPath(drawTextString,path,50,10,paint); //中心座標[x:100,y:1300],半径100,3時の位置から反時計周りのPathを定義 path = new Path(); path.addCircle(100,1300,100,Path.Direction.CCW); paint.setColor(Color.LTGRAY); //文字列の文字をPathの0の位置から、pathの下方向に50の距離に描画する。 canvas.drawTextOnPath(drawTextArray,1,3,path,0,-50,paint); } }
|
|
|
|
|
||||||||||
| ||||||||||||||