|
点線と円弧 2020/10/01 |
Androidでは点線を簡単に描画できます。
|
シンプルな点線 |
これはストロークに影響をあたえます。直線のみならずストロークを使った描画が対象になります。文字も対象です。
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
paint.setColor(Color.rgb(255, 0, 0));
paint.setPathEffect(new DashPathEffect(new float[]{10, 10}, 0));
Path path = new Path();
path.moveTo(20, 200);
path.lineTo(500, 200);
canvas.drawPath(path, paint);
canvas.drawCircle(300, 350, 100, paint);
String str = "閑";
paint.setTextSize(200);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.rgb(255, 255, 255));
canvas.drawText(str, 500, 900, paint);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
paint.setColor(Color.rgb(0, 0, 0));
canvas.drawText(str, 500, 900, paint);
paint.setPathEffect(new DashPathEffect(new float[]{10, 10}, 0)); float[]{10,
10}で点線を描く長さと点線を描かない長さを決定します。これは複数設定可能です。例えば次第に点線の長さが長くなるようにすることもできます。
|
●による点線? |
こんな点線もできます。
Path shape = new Path();
shape.addOval(-10, -10, 10,10, Path.Direction.CW);
paint.setPathEffect(new PathDashPathEffect(shape, 30, 0,
PathDashPathEffect.Style.TRANSLATE));
paint.setColor(Color.rgb(0, 0, 255));
canvas.drawLine(0, 480, 500, 480, paint);
|
ゴルフナビで作った。点線ではないかも |
方向を派手に表示したかったので、太めのユニークな線を作りました。
makeArrowToRighは矢印を定義する関数。 drawArrowLineが描画する関数本体。
private static Path makeArrowToRight()
{
int w = ARROW_WIDTH;
int h = ARROW_HEIGHT;
Path p = new Path();
p.moveTo(w, 0);
p.lineTo(0, -h);
p.lineTo(w * 2, -h);
p.lineTo(w * 3, 0);
p.lineTo(w * 2, h);
p.lineTo(0, h);
return p;
}
private void drawArrowLine(Canvas canvas, float fromX, float fromY, float toX, float toY )
{
PathEffect effect;
effect = new PathDashPathEffect(makeArrowToRight(), ARROW_WIDTH * 4,
0, PathDashPathEffect.Style.ROTATE);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStrokeWidth(ARROW_WIDTH * 15 / 10);
paint.setColor(Color.argb(192, 255, 255, 255));
paint.setStyle(Paint.Style.STROKE);
canvas.drawLine(fromX, fromY, toX, toY, paint);
paint.setPathEffect(effect);
paint.setColor(Color.argb(192, 0, 0, 255));
canvas.drawLine(fromX, fromY, toX, toY, paint);
}
|
円弧の描画 |
グラフィックスの基本円弧を忘れいたので追記します。
private void drawArc(Canvas canvas){
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5);
canvas.drawArc(new RectF(10.0f, 550.0f, 150.0f, 700.0f),
180, 90, true, paint);
canvas.drawArc(new RectF(200.0f, 550.0f, 350.0f, 700.0f),
180, -90, false, paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.BLUE);
canvas.drawArc(new RectF(10.0f, 800.0f, 150.0f, 950.0f),
180, 90, true, paint);
canvas.drawArc(new RectF(200.0f, 800.0f, 350.0f, 950.0f),
180, -90, false, paint);
}
上記のようにパラメータを設定します。 |
ダウンロード |
MainActivity.java
GraphicView2.java
|