panthro
panthro

Reputation: 24061

Rotate an image around center

How can I rotate an image around it's center point? This rotates it but also moves it:

 Matrix mat = new Matrix();
 mat.postRotate(45);
 Bitmap bMapRotate = Bitmap.createBitmap(dialBM, 0, 0, dialBM.getWidth(),dialBM.getHeight(), mat, true);
dial.setImageBitmap(bMapRotate);

I've checked other examples on this site, but they either fail to work or use canvas, I do not wish to use canvas.

Upvotes: 2

Views: 6743

Answers (2)

Paramount
Paramount

Reputation: 1107

The second and third arguments to postRotate is the x and y pivot point.

 mat.postRotate(45, dialBM.getWidth()/2, dialBM.getHeight()/2);

Upvotes: 7

zmbq
zmbq

Reputation: 39013

Probably because your matrix rotates around (0,0), and not the middle of your bitmap. You should declare two additional matrices - one for moving the bitmap's center to (0,0) (shift by -getWidth()/2, -getHeight(2)) and one to move the bitmap's center back to (0,0). Multiply the three matrices, and then the result.

Upvotes: 0

Related Questions