使用PathMeasure.getMatrix()时,如何在0,0以外的点上旋转矩阵旋转

时间:2013-06-04 19:22:24

标签: android matrix path rotation

我正沿着Canvas上的路径移动一个位图。路径有各种曲线,位图如下。 pm.getMatrix在传递PathMeasure.POSITION_MATRIX_FLAG和TANGENT_MATRIX_FLAG时沿路径处理位置和旋转调整非常可爱,但是,它会旋转在0,0坐标上旋转的位图。我需要它在位图的中心转动。

我在调试器中打开了矩阵,看起来确实没有勺子。然而,有3个浮子阵列,每个浮子包含3个浮子。我猜如果我能得到这些值,我可能会弄清楚哪一个描述了对象的旋转,并且可能有某种方法来改变枢轴点?我认为没有其他办法可以做到这一点......至少会喜欢这三个浮动阵列实际描述的内容。

PathMeasure pm = new PathMeasure(playerPath, false);
float fSegmentLen = pm.getLength() / numSteps;
Matrix mxTransform = new Matrix();

pm.getMatrix(fSegmentLen * iCurStep, mxTransform,
                    PathMeasure.POSITION_MATRIX_FLAG + PathMeasure.TANGENT_MATRIX_FLAG );
canvas.drawBitmap(playerCar, mxTransform, null);

1 个答案:

答案 0 :(得分:4)

试试这个:

private void setDrawingMatrix(float distance) {
    pm.getMatrix(distance, mxTransform, PathMeasure.POSITION_MATRIX_FLAG | PathMeasure.TANGENT_MATRIX_FLAG);
    mxTransform.preTranslate(-playerCar.getWidth() / 2.0f, -playerCar.getHeight() / 2.0f);
}

然后在onDraw方法中:

canvas.drawBitmap(playerCar, mxTransform, null);
开心驾驶......