Увеличить холст с помощью функции canvas.scale?
Я реализовал долго onDraw
метод, который рисует набор прямоугольников. Прямоугольники слишком малы, и я хочу, чтобы они казались больше. Но, к сожалению, я не могу изменить координаты прямоугольника, потому что они хранятся в базе данных. Так есть ли способ увеличить масштаб холста, используя canvas.scale()
?
1 ответ
Я собираюсь предвосхитить этот ответ, сказав, что вам нужно будет нарисовать все в 0,0, а затем масштабировать его и, наконец, перевести, чтобы он вел себя правильно.
Просто сделайте следующее в вашем методе onDraw:
canvas.save();
canvas.translate(xValue, yValue);
canvas.scale(xScale, yScale)
/* draw whatever you want scaled at 0,0*/
canvas.restore();
xScale сжимается или растягивается в направлении X, yScale сжимается или растягивается в направлении Y.
1.0 является значением по умолчанию для них, поэтому 2.0 увеличит его вдвое, а 0.5 уменьшит вдвое.
Пример:
canvas.save();
canvas.translate(50, 50);
canvas.scale(0.5f, 0.5f);
canvas.drawRect(0.0, 0.0, 5.0, 5.0, paint);
canvas.restore();
Это нарисует прямоугольник длиной 5,0 и шириной 5,0, уменьшит его до 2,5 для длины и ширины, а затем переместит его в (50, 50).
Результатом будет прямоугольник, нарисованный так, как будто вы сделали это:
canvas.drawRect(50.0, 50.0, 52.5, 52.5, paint);
Надеюсь, это поможет!