2011-09-30 13 views
31

path.moveTo(x, y)path.lineTo(x, y)を使用してパスを作成し、各パスに複数の行を追加しています。その後、canvas.drawPath(path, paint)がすべてのパスを描画しています。しかし、いくつかのパスではライン間に1〜2ピクセルのスペースがあります。どのようにこれらのスペースを削除できますか?スムース/丸みのあるパスを描く方法は?

paint = new Paint(); 
paint.setColor(Color.RED); 
paint.setStyle(Paint.Style.FILL_AND_STROKE); 
paint.setDither(false); 
paint.setStrokeWidth(3); 
paint.setAntiAlias(true); 

for (int i = 0; i < length; i++) { 
    Path path = new Path(); 
    path.moveTo(a, b); 
    path.lineTo(c, d); 
    path.moveTo(c, d); 
    path.lineTo(e, f); 
    canvas.drawPath(path, paint); 
} 
+0

あなたのコードを上に配置する必要があります。 – blessenm

+0

Paintオブジェクトでアンチエイリアスを設定しようとしましたか? – Bringer128

+0

はい、私は自分の質問を編集しました。 –

答えて

82

多分これはあなたが

paint.setColor(color);     // set the color 
paint.setStrokeWidth(size);    // set the size 
paint.setDither(true);     // set the dither to true 
paint.setStyle(Paint.Style.STROKE);  // set to STOKE 
paint.setStrokeJoin(Paint.Join.ROUND); // set the join to round you want 
paint.setStrokeCap(Paint.Cap.ROUND);  // set the paint cap to round too 
paint.setPathEffect(new CornerPathEffect(10)); // set the path effect when they join. 
paint.setAntiAlias(true);       // set anti alias so it smooths 

欲しいものを作成します:)

+0

確認済みです。ありがとう! –

+0

ありがとう、あなたは私の日を救った。 –

11

あなたはおそらくlineTo(c, d)にしたくないし、その直後moveTo(c, d)同じポイントがある:私のコードは、そのようなものです。これを行うと、醜いギャップのように見えるかもしれない2つの線分に素敵なコーナージョイントが得られません。

これを削除してみてください。moveTo

+0

非常に良いヒント。 –

関連する問題