web-dev-qa-db-ja.com

滑らかな/丸みを帯びたパスを描く方法は?

パスを作成し、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);
}
36
Onuray Sahin

多分これはあなたが望むものを作成します

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

:)

99
Terence Lui

あなたはおそらくlineTo(c, d)をしたくないし、すぐにmoveTo(c, d)も同じポイントです。これを行うと、醜いギャップのように見える可能性がある2つの線分セグメントに素敵なコーナー結合が得られません。

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

11
Graham Borland