#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)
Комментариев нет:
Отправить комментарий