我正在制作Android游戏,需要旋转图片。当我旋转它显然它的尺寸变化。例如,当它旋转45度时(它是方形的,但我希望这可以用于任何矩形,所以它是更通用的解决方案),它的宽度和高度就成为对角线的长度,比对角线长。在一些代数之后,你可以计算出比例因子是sqrt(2)。但我知道旋转位图的唯一方法是使用矩阵。例:图像在旋转时更改大小。我该如何阻止?
matrix.postRotate(degrees);
rotated = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
使用该方法的位图的大小保持恒定,从而在图像必须收缩的含量适合经旋转的图像。这导致我的问题。
我现在应该工作,但运行时不能。可能是因为它过于复杂,从来没有少,那就是:
float totalRotated = 0;
public void rotate(float degrees){
if(mBitmap != null){
float increment = (float)((mBitmap.getWidth()/45.0)*(Math.sqrt(2)-1));
totalRotated += degrees;
totalRotated -= (float)((int)totalRotated/360)*360;
matrix.reset();
matrix.setRotate(totalRotated);
rotated = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
rotated = Bitmap.createScaledBitmap(rotated, (int)(mBitmap.getWidth()+(((Math.abs(Math.abs(((int)totalRotated%90)-45)-45)))*increment)), (int)(mBitmap.getHeight()+(((Math.abs(Math.abs(((int)totalRotated%90)-45)-45)))*increment)), true);
}
}
使用Log.d
功能,我能够确定的是,在最后的声明中设定的尺寸是什么,我希望他们都能但图像没有按” t改变大小。由于这甚至不起作用,我需要更好的方法来做到这一点或解决方法。另外我的方法只适用于正方形。那么,我该怎么做?
编辑: 我的方法确实有效,我只是没有打电话setBounds()
虽然这不是唯一的方法,但效率非常低。
请澄清你的问题是什么。我不知道。 – Gabe