Я пытаюсь создать пользовательскую форму с помощью объекта Path в Android, и у меня возникает странная проблема.
То, что я пытаюсь добиться изображен на картинке нижеРисовать и заполнить пользовательскую форму
Вот код, я использую, чтобы рисовать и заполнить форму:
public class BallView extends RelativeLayout {
....
protected void onDraw(Canvas canvas) {
...
PaintArc(canvas);
}
private void PaintArc(Canvas canvas) {
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setAntiAlias(true);
p.setStyle(Paint.Style.FILL_AND_STROKE);
p.setStrokeWidth(2);
p.setColor(Color.RED);
RectF oval = new RectF(20, 20, getWidth() - 20, getHeight() - 20);
RectF oval2 = new RectF(0, 0, getWidth(), getHeight());
Path path = new Path();
path.setFillType(Path.FillType.EVEN_ODD);
path.addArc(oval, 0, 180);
path.addArc(oval2, 0, 180);
float y=20+oval.height()/2;
float x=20;
path.moveTo(x,y);
path.lineTo(x - 20, y);
x=oval.width()+20;
path.moveTo(x,y);
path.lineTo(x+20,y);
path.close();
canvas.drawPath(path, p);
}
}
Фактический результат, Я получаю выглядит так:
Результирующий форма без наполнения выглядит так:
Можете ли вы сказать мне, что я делаю неправильно?
почему так сложный? вы можете делать то, что хотите, с одним Path.addArc – pskink
Я думал о том, чтобы сделать фигуру только из одной дуги и увеличить размер линии, но я просто экспериментирую и пытаюсь понять структуру. Я хочу знать, как заполнить пользовательскую форму, созданную с использованием объекта Path. – Andrei
ОК, я вижу, может быть, попробуйте arcTo вместо addArc? – pskink