Страницы

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

воскресенье, 8 декабря 2019 г.

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

#java #android


Рисую примерно так:

  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);


Как раскрасить сектора программно?


    


Ответы

Ответ 1



Раз вы решили рисовать линиями (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; } }

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

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