Android 不在中间旋转 为什么位图不在中间旋转?
当我用sin旋转点的时候,因为这是可以的,用仿射变换在摇摆中旋转是有效的,但用矩阵旋转是不行的 我使用以下代码:Android 不在中间旋转 为什么位图不在中间旋转?,android,image-rotation,Android,Image Rotation,当我用sin旋转点的时候,因为这是可以的,用仿射变换在摇摆中旋转是有效的,但用矩阵旋转是不行的 我使用以下代码: matrix.reset(); matrix.setRotate(35.0f,middleofx,middleofy); Bitmap t=Bitmap.createBitmap(BI_auto); Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0, BI_car.getWidth(), BI
matrix.reset();
matrix.setRotate(35.0f,middleofx,middleofy);
Bitmap t=Bitmap.createBitmap(BI_auto);
Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0,
BI_car.getWidth(), BI_car.getHeight(), matrix, true);`
点的旋转工作:
sx = ((carx) + 45 - worldx);
sy = ((cary) + 45 - worldy);
float rad = (float) (grad / 180.0 * Math.PI);
float ex2 = (float) (sx + length* Math.sin(angle - rad));
float ey2 = (float) (sy + length* Math.cos(angle - rad));
红色和红色的点是正确的,但是绿色的汽车显示器是错误的,而不是在中间。
显示错误旋转的位图
我不确定java语法,但您应该像下面这样做
matrix.translate(-middleofx,-middleofy); // these might be positive.
matrix.setRotate(35.0f);
Bitmap t=Bitmap.createBitmap(BI_auto);
Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0, BI_car.getWidth(), BI_car.getHeight(), matrix, true);
matrix.translate(0,0);
旋转后的位图将比原始位图大,以不剪裁图像。您可以尝试绘制结果,以便中心坐标匹配