Как нарисовать гладкий/закругленный путь?

Я создаю Paths и добавляю несколько строк в каждом пути, используя 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);
}

Ответ 1

Возможно, это создаст то, что вы хотите

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

:)

Ответ 2

Вероятно, вы не хотите lineTo(c, d), а затем сразу moveTo(c, d), который является той же точкой. Если вы это сделаете, вы не получите приятного углового соединения на двух сегментах линии, что может выглядеть как уродливый разрыв.

Попробуйте удалить это moveTo.