我正沿着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);
答案 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);
开心驾驶......