Search code examples
androidcanvasscale

Issue on scaling a Canvas in Android


I have a code to scale drawing canvas. So i tried this code. i scale it but it moves down,

here is my code:

canvas.save();
scaleA = 1.1;
scaleB = 1.1;
canvas.scale(scaleA, scaleB);
canvas.restore();

the issue is even when i scale the Y coordinates move down, so i try to translate or reduce y coordinates but i still issue. any one knows how to properly scale a drawing canvas?

i tried like this:

canvas.save();
scaleA = 1.1;
scaleB = 1.1;
canvas.translate(scaleA, -scaleB);
canvas.scale(scaleA, scaleB);
canvas.restore();

Solution

  • You have to set the center of your image, if your image center is equal to the canvas(view) center

    canvas.scale(sx, sy, canvas.getWidth() / 2, canvas.getHeight() / 2);
    

    Or else, change the last two params to whatever center you want it to be, you don't need to translate