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