Страницы

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

воскресенье, 12 января 2020 г.

Частичная перерисовка canvas в android

#java #android #canvas


Подскажите, каким способом можно сделать частичную перерисовку canvas. При вызове
метода invalidate() будет перерисован весь холст, а как сделать именно дорисовку к
существующему?

Мне нужно на нарисованной гексагональной сетке перекрасить некоторые шестиугольники,
и не хотелось бы для этого заново рисовать всю сетку.

 for (Hexagon hexagon: hexagonalGrid.getHexagons()) 
   drawPoly(canvas, convertToPointsArr(hexagon.getPoints(), array), "#FF5346", Style.STROKE);




 private void drawPoly(Canvas canvas, int[] array, String color, Style style)          {

   Paint p = new Paint();

   p.setColor(Color.parseColor(color));
   p.setStyle(style);

   if (width > 15) p.setStrokeWidth(2);
   else if (width > 30) p.setStrokeWidth(1);
   else p.setStrokeWidth(5);

   Path polyPath = new Path();
   polyPath.moveTo(array[0], array[1]);

   for (int i = 0; i < 12; i = i + 2)
     polyPath.lineTo(array[i], array[i + 1]);

   polyPath.lineTo(array[0], array[1]);
   canvas.drawPath(polyPath, p);
 }



    


Ответы

Ответ 1



Да, можно. Вы можете вычислить прямоугольный регион, который необходимо перерисовать, и передать его в метод public void invalidate(Rect dirty)

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

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