Canvasに点を描こう
Canvasに点を描画するには、画面左上を原点としx,y座標で描画位置を指定し、Paintで半径や色、形を指定する必要があります。
点を描画する |
void |
drawPoint(float x, float y, Paint paint) |
指定した座標に点を中心を描画する。
- float x:点を描画するx座標を左上を原点として指定する。
- float y:点を描画するy座標を左上を原点として指定する。
- Paint paint:半径や色、形を指定する。
|
void |
drawPoints(float[] pts, Paint paint) |
指定した座標配列に点を描画する。
- float[] pts:点を描画するx,y座標を左上を原点として指定する。
配列は[x0,y0,x1,y1,x2,y2,…]のように偶数要素(0を含む)にx座標、奇数要素にy座標を指定する。
- Paint paint:半径や色、形を指定する。
|
void |
drawPoints(float[] pts, int offset, int count, Paint paint) |
指定した座標配列に点を描画する。
- float[] pts:点を描画するx,y座標を左上を原点として指定する。
配列は[x0,y0,x1,y1,x2,y2,…]のように偶数要素(0を含む)にx座標、奇数要素にy座標を指定する。
- int offset:座標配列内の描画に使う開始要素を指定する。
ptsの要素数を超える値や負数を指定するとエラーになります。
- int count:座標配列内の描画に使う開始要素からの要素数を指定する。 offsetとの和がptsの要素数を超える値や負数を指定するとエラーになります。
- Paint paint:半径や色、形を指定する。
|
使用例
点を描画するようなカスタムViewを作りました。
public class MyCanvasPoints extends View{
public MyCanvasPoints(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
//直径を50に設定
paint.setStrokeWidth(50);
//形を正方形に設定
paint.setStrokeCap(Paint.Cap.SQUARE);
//色を赤色に設定
paint.setColor(Color.RED);
//x:100,y:100の位置に点を描画
canvas.drawPoint(100,100, paint);
//色を緑色に設定
paint.setColor(Color.GREEN);
//形を丸に設定
paint.setStrokeCap(Paint.Cap.ROUND);
/**
* 3つの点を描画する
* 点1[x:200,y:200]
* 点2[x:200,y:300]
* 点3[x:200,y:400]
*/
canvas.drawPoints(new float[]{200f,200f,300f,200f,400f,200f},paint);
/**
* 座標配列を宣言
* 要素番号0~7
*/
float[] pts = new float[]{300f,300f,400f,400f,500f,500f,600f,600f};
//色を青色に設定
paint.setColor(Color.BLUE);
/**
* 座標配列のすべての値を使い点を描画する。
* 4つの点を描画する
* 点1[x:300,y:300]
* 点2[x:400,y:400]
* 点3[x:500,y:500]
* 点4[x:600,y:600]
*/
canvas.drawPoints(pts,0,pts.length,paint);
//色を黒色に設定
paint.setColor(Color.BLACK);
/**
* 座標配列の0番目の要素を使わず、1番目の値から7つの値を使い点を描画する。
* 3つの点を描画する
* 点1[x:300,y:400]
* 点2[x:400,y:500]
* 点3[x:500,y:600]
* 点4[x:600,?](*値が不足し座標が作れないため描画されない)
*/
canvas.drawPoints(pts,1,7,paint);
}
}