Bitmap
轮换我遇到了一个奇怪的问题。
那是我的代码:
onDraw
方法中的
int cx_gear_big = (getWidth() - gear_big.getWidth()) >> 1;
int cy_gears_big = (getHeight() - gear_big.getHeight()) >> 1;
canvas.drawBitmap(rotateGear(gear_big, bigGearAngle), cx_gear_big,cy_gears_big, null);
这是我的方法,它返回旋转的Bitmap
:
public static Bitmap rotateGear(Bitmap source, int angle)
{
Matrix matrix = new Matrix();
matrix.postRotate(angle);
return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
}
我canvas
中的齿轮很少,但这并不重要。
我的问题是:
当我旋转Bitmap
(一个齿轮)时,它会向下移动(它取决于旋转角度)然后它会回来......
在这种情况下我的问题在哪里?
UPD:
Bitmap
的翻译不是线性的。就像弹跳一样。
答案 0 :(得分:1)
解决这个问题的理想方法是在旋转前翻译矩阵并将其翻译回来。代码示例:
Matrix m = new Matrix();
float px = getWidth()/2;
float py = getHeight()/2;
m.postTranslate(-bitmap.getWidth()/2, -bitmap.getHeight()/2);
m.postRotate(angle);
m.postTranslate(px, py);
canvas.drawBitmap(bitmap, m, null);
答案 1 :(得分:0)
只需使用此代码
matrix.setRotate(angle, bitmap.getWidth()/2, bitmap.getHeight()/2);