【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);
}
}
|
|
|
|
|
||||||||||
| ||||||||||||||





