Search code examples
androidmatrixrotationscaledimensions

Possible to calculate the width/height of a rotated matrix?


If I use this:

mCamera.rotateY(45);
mCamera.getMatrix(mMatrix);
mMatrix.preTranslate(-pivotX, -pivotY);
mMatrix.postTranslate(pivotX + centerX, pivotY + centerY);

And do:

canvas.drawBitmap(bitmap, mMatrix, null);

Then the drawn picture will be taller and slimmer and the matrix will be nicely applied to the whole picture. Now, is there any way to calculate the rotated size? I want to fit the image by scaling it and now when I rotate it some of the top and bottom is clipped because of the parent's constraints. Thanks!

EDIT:

What I am going to do is spin the image and the range for rotateY will be from 0 to 90.


Solution

  • Well, you could easily let the matrix map the corners of your bitmap and then calculate the bounds, as the mapped corners will be the max / min for x and y coordinate. Maybe you can do it without too many if clauses :)

    Edit: Check out

    RectF r = new RectF(/*your bitmap's corners*/);
    matrix.mapRect(r);
    

    That way you should get r's new size.