Как нарисовать гладкий/закругленный путь?
Я создаю 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
.