Рисую примерно так:
canvas.drawCircle(0, 0, 100, paint);
canvas.drawCircle(20, 20, 50, paint);
canvas.drawLine(0,50,100,50, paint);
canvas.drawLine(50,0,50,100, paint);
Как раскрасить сектора программно?
Ответ
Раз вы решили рисовать линиями (drawLine), то надо так и продолжать. Для начала у вас должна быть логика, определяющая все ваши границы, а потом уже приступать к рисованию. Я взял центр окружности и закрасил левую четверть зеленым цветом.
public class MyView extends View {
Paint paint;
public MyView(Context context) {
super(context);
init();
}
private void init(){ // значения по умолчанию
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawLine(100,100,200,100, paint); // startX, startY, stopX, stopY линии диаметра
canvas.drawLine(150,50,150,150, paint);
canvas.drawLine(143,98,143,52, initGreen()); //закраска зеленым
canvas.drawLine(135,98,135,55, initGreen()); //двигаем закраску по оси Х
canvas.drawLine(127,98,127,58, initGreen()); //двигаем закраску по оси Х
canvas.drawLine(120,98,120,61, initGreen()); //двигаем закраску по оси Х
canvas.drawLine(113,98,113,61, initGreen()); //двигаем закраску по оси Х
canvas.drawLine(105,98,105,63, initGreen()); //двигаем закраску по оси Х
canvas.drawCircle(150, 100, 50, initBlue());
}
private Paint initGreen(){
paint.setStrokeWidth(10);
paint.setColor(Color.GREEN);
return paint;
}
private Paint initBlue(){
paint.setStrokeWidth(5);
paint.setColor(Color.BLUE);
return paint;
}
}
Комментариев нет:
Отправить комментарий