Увеличить холст с помощью функции 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);

Надеюсь, это поможет!

Другие вопросы по тегам