Android PathDashPathEffect: форма контура не работает для прямой линии
Я пытаюсь создать собственный вид, который рисует линию с узором диагональных полос. Это должно выглядеть примерно так:
Я думаю, что следует использовать PathDashPathEffect, но когда я устанавливаю форму траектории как траекторию прямой линии, представление ничего не рисует. Если я добавлю больше сегментов к пути, чтобы он мог закрыться, например, сделав его треугольником, то представление отобразится.
Вот моя форма пути:
Path pathShape = new Path();
pathShape.moveTo(0, 10);
pathShape.lineTo(10, 0);
Выше не работает, вид ничего не показывает. Ниже работает и показывает треугольники в качестве шаблона на линии:
Path pathShape = new Path();
pathShape.moveTo(0, 0);
pathShape.lineTo(10, 10);
pathShape.lineTo(10, 0);
Весь мой пользовательский вид:
private final Paint paint;
private final Path path;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(20);
paint.setColor(Color.RED);
Path pathShape = new Path();
pathShape.moveTo(0, 0);
pathShape.lineTo(10, 10);
pathShape.lineTo(10, 0);
PathDashPathEffect pathEffect = new PathDashPathEffect(pathShape, 30, 30, PathDashPathEffect.Style.ROTATE);
paint.setPathEffect(pathEffect);
path = new Path();
}
@Override
protected void onDraw(Canvas canvas) {
path.reset();
path.moveTo(0, getHeight() / 2);
path.lineTo(getWidth(), getHeight() / 2);
canvas.drawPath(path, paint);
}
Кто-нибудь знает, как этого добиться?
Большое спасибо!
1 ответ
В конце концов я достиг этого, изменив Путь, чтобы он стал формой, закрывающей другой путь, чем Путь. Я сделал форму наклонным прямоугольником шириной 1, и это сработало. Поэтому я думаю, что извлеченные уроки: PathDashPathEffect не работает, если PathEffect - это не закрытый путь.