Страницы

Поиск по вопросам

пятница, 12 октября 2018 г.

Как закрасить сектора картинки приведенной ниже?

Рисую примерно так:
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; } }

Комментариев нет:

Отправить комментарий