我需要一些矩阵运算的帮助。我要达到的目标是:
缩小比例
移动到特定位置
旋转一定程度(在位图的中心)
我的代码当前如下所示:

            Matrix matrix = new Matrix();
            matrix.preRotate(mShip.getRotation(), mShip.getX() + mShip.getCurrentBitmap().getWidth()/2f, mShip.getY()  + mShip.getCurrentBitmap().getHeight()/2f);
            matrix.setScale((1.0f * mShip.getWidth() / mShip.getCurrentBitmap().getWidth()), (1.0f * mShip.getHeight() / mShip.getCurrentBitmap().getHeight()));
            matrix.postTranslate(mShip.getX(), mShip.getY());
            mCanvas.drawBitmap(mShip.getCurrentBitmap(), matrix, mBasicPaint);

但是旋转有错误的中心,我不知道如何解决这个问题-我已经环顾四周,但只发现了类似的问题,没有解决这个问题。
我想我可能不得不将其中一个操作应用于另一个值,因为它们是按顺序执行的,但我不知道如何去做。

最佳答案

请尝试以下代码:

Matrix matrix = new Matrix();
matrix.setTranslate(-mShip.getCurrentBitmap().getWidth()/2f, -mShip.getCurrentBitmap().getHeight()/2f);
matrix.postRotate(mShip.getRotation());
matrix.postTranslate(mShip.getX(), mShip.getY());
matrix.postScale((1.0f * mShip.getWidth() / mShip.getCurrentBitmap().getWidth()), (1.0f * mShip.getHeight() / mShip.getCurrentBitmap().getHeight()), mShip.getX(), mShip.getY());

10-08 15:13